You are here

function smart_ip_get_zip in Smart IP 6

Same name and namespace in other branches
  1. 6.2 includes/smart_ip.utility.inc \smart_ip_get_zip()
  2. 7.2 includes/smart_ip.utility.inc \smart_ip_get_zip()
  3. 7 includes/smart_ip.utility.inc \smart_ip_get_zip()
1 string reference to 'smart_ip_get_zip'
smart_ip_update_db_batch in includes/smart_ip.utility.inc
Prepare a batch definition

File

includes/smart_ip.utility.inc, line 37
Utility routines to load the Smart IP database.

Code

function smart_ip_get_zip($src = NULL, &$context) {
  if (variable_get('smart_ip_store_location_csv_done', FALSE) || variable_get('smart_ip_extract_zip_done', FALSE)) {

    // We are in recovery mode.
    return;
  }
  $path = file_directory_path() . '/smart_ip';
  if (!file_check_directory($path, FILE_CREATE_DIRECTORY | FILE_MODIFY_PERMISSIONS)) {

    // Private file system path not defined then stop the process
    $message = t('File directory path is not writable, please check !here.', array(
      '!here' => l('here', 'admin/settings/file-system'),
    ));
    $context['results']['#abort'] = $message;
    $context['message'] = $message;
    return;
  }
  $zip_files = file_scan_directory($path, '\\.zip$');
  foreach ($zip_files as $zip_file) {
    $context['results']['#zip_file'] = $zip_file->filename;
  }
  if (variable_get('smart_ip_get_zip_done', FALSE)) {

    // We are in recovery mode. Using previous downloaded zip.
    $context['finished'] = TRUE;
    $context['message'] = t('Using previous downloaded zip file (recovery mode)');
    return;
  }
  variable_set('smart_ip_get_zip_done', FALSE);
  if (empty($src)) {

    // Fallback zip file
    $src = 'http://geolite.maxmind.com/download/geoip/database/GeoLiteCity_CSV/GeoLiteCity_' . format_date(time(), 'custom', 'Ym') . '01.zip';
  }
  if (isset($context['results']['#zip_file'])) {

    // Don't download, use manually uploaded zip file then
    // update our progress information.
    $context['finished'] = TRUE;
    $context['message'] = t('Using manually uploaded @zip file', array(
      '@zip' => $context['results']['#zip_file'],
    ));
  }
  else {
    $context['results']['#zip_file'] = $path . '/geoip_db.zip';
    $context['finished'] = 50 / 100;
    if (@copy($src, $context['results']['#zip_file'])) {

      // Update our progress information.
      $context['finished'] = TRUE;
      $context['message'] = t('Download done. Extracting zip file...');

      // An indicator that is to be used in recovery mode
      variable_set('smart_ip_get_zip_done', TRUE);
    }
    else {

      // Error occured then stop the process
      $message = t('Download %src file failed. Be sure %src exists.', array(
        '%src' => $src,
      ));
      $context['results']['#abort'] = $message;
      $context['message'] = $message;
    }
  }
}