update_manager_archive_extract

update_manager_archive_extract($file, $directory)

Unpacks a downloaded archive file.

Parameters

string $file: The filename of the archive you wish to extract.

string $directory: The directory you wish to extract the archive into.

Return value

Archiver The Archiver object used to extract the archive.

Throws

Exception

File

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

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function update_manager_archive_extract($file, $directory) {
  $archiver = archiver_get_archiver($file);
  if (!$archiver) {
    throw new Exception(t('Cannot extract %file, not a valid archive.', array('%file' => $file)));
  }
 
  // Remove the directory if it exists, otherwise it might contain a mixture of
  // old files mixed with the new files (e.g. in cases where files were removed
  // from a later release).
  $files = $archiver->listContents();
 
  // Unfortunately, we can only use the directory name to determine the project
  // name. Some archivers list the first file as the directory (i.e., MODULE/)
  // and others list an actual file (i.e., MODULE/README.TXT).
  $project = strtok($files[0], '/\\');
 
  $extract_location = $directory . '/' . $project;
  if (file_exists($extract_location)) {
    file_unmanaged_delete_recursive($extract_location);
  }
 
  $archiver->extract($directory);
  return $archiver;
}
doc_Drupal
2025-01-10 15:47:30
Comments
Leave a Comment

Please login to continue.