| 7 update.manager.inc | update_manager_archive_extract($file, $directory) |
| 8 update.manager.inc | update_manager_archive_extract($file, $directory) |
Unpack a downloaded archive file.
Parameters
string $project: The short name of the project to download.
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 on failure.
Related topics
2 calls to update_manager_archive_extract()
File
- modules/
update/ update.manager.inc, line 752 - Administrative screens and processing functions for the update manager. This allows site administrators with the 'administer software updates' permission to either upgrade existing projects, or download and install new ones, so long as the…
Code
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;
}
Login or register to post comments