You are here

function update_manager_file_get in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/update/update.manager.inc \update_manager_file_get()
  2. 7 modules/update/update.manager.inc \update_manager_file_get()

Copies a file from the specified URL to the temporary directory for updates.

Returns the local path if the file has already been downloaded.

Parameters

$url: The URL of the file on the server.

Return value

string Path to local file.

2 calls to update_manager_file_get()
UpdateManagerInstall::submitForm in core/modules/update/src/Form/UpdateManagerInstall.php
Form submission handler.
update_manager_batch_project_get in core/modules/update/update.manager.inc
Implements callback_batch_operation().

File

core/modules/update/update.manager.inc, line 217
Administrative screens and processing functions of the Update Manager module.

Code

function update_manager_file_get($url) {
  $parsed_url = parse_url($url);
  $remote_schemes = [
    'http',
    'https',
    'ftp',
    'ftps',
    'smb',
    'nfs',
  ];
  if (!isset($parsed_url['scheme']) || !in_array($parsed_url['scheme'], $remote_schemes)) {

    // This is a local file, just return the path.
    return \Drupal::service('file_system')
      ->realpath($url);
  }

  // Check the cache and download the file if needed.
  $cache_directory = _update_manager_cache_directory();
  $local = $cache_directory . '/' . \Drupal::service('file_system')
    ->basename($parsed_url['path']);
  if (!file_exists($local) || update_delete_file_if_stale($local)) {
    return system_retrieve_file($url, $local, FALSE, FileSystemInterface::EXISTS_REPLACE);
  }
  else {
    return $local;
  }
}