-
Kevin Cristiano authoredKevin Cristiano authored
class-zip-extractor.php 1.83 KiB
<?php
/**
* Zip extractor class.
*
* @since 5.69
*/
// Make sure WP_Upgrader exists.
if (!class_exists('WP_Upgrader')) {
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
}
/**
* Zip extractor class.
*
* @since 5.69
*/
class CLI_Tools_CiviCRM_Zip_Extractor extends WP_Upgrader {
/**
* @var bool
* Whether a bulk upgrade/installation is being performed.
* @since 5.69
* @access public
*/
public $bulk = FALSE;
/**
* Initializes the extract strings.
*
* @since 5.69
*/
public function extract_strings() {
$this->strings['unpack_package'] = 'Unpacking the archive...';
$this->strings['installing_package'] = 'Installing the archive...';
$this->strings['remove_old'] = 'Removing the existing directory...';
$this->strings['remove_old_failed'] = 'Could not remove the existing directory.';
$this->strings['process_failed'] = 'Extraction failed.';
$this->strings['process_success'] = 'Extraction completed successfully.';
}
/**
* Extracts a zip archive to a directory.
*
* @since 5.69
*
* @param string $zipfile The path to the zipfile.
* @param string $destination The directory name to extract to.
* @param array $settings The array of extraction settings.
* @return array|false|WP_Error The result on success, otherwise a WP_Error, or false if unable to connect to the filesystem.
*/
public function extract($zipfile, $destination, $settings) {
$this->extract_strings();
$options = [
'package' => $zipfile,
'destination' => untrailingslashit($destination),
];
$defaults = [
'clear_destination' => TRUE,
'clear_working' => TRUE,
'abort_if_destination_exists' => FALSE,
];
$settings = wp_parse_args($settings, $defaults);
$options = $options + $settings;
return $this->run($options);
}
}