. */ require_once 'phing/tasks/ext/ExtractBaseTask.php'; require_once 'phing/system/io/FileSystem.php'; /** * Extracts one or several zip archives using ZipArchive class. * * @author Joakim Bodin * @author George Miroshnikov * @version $Id: UnzipTask.php 905 2010-10-05 16:28:03Z mrook $ * @package phing.tasks.ext */ class UnzipTask extends ExtractBaseTask { /** * Extract archive content into $this->todir directory * @param PhingFile Zip file to extract * @return boolean */ protected function extractArchive(PhingFile $zipfile) { $this->log("Extracting zip: " . $zipfile->__toString() . ' to ' . $this->todir->__toString(), Project::MSG_INFO); $zip = new ZipArchive(); $result = $zip->open($zipfile->getAbsolutePath()); if (!$result) { $this->log("Unable to open zipfile " . $zipfile->__toString(), Project::MSG_ERR); return false; } $result = $zip->extractTo($this->todir->getAbsolutePath()); if (!$result) { $this->log("Unable to extract zipfile " . $zipfile->__toString(), Project::MSG_ERR); return false; } return true; } /** * List archive content * @param PhingFile Zip file to list content * @return array List of files inside $zipfile */ protected function listArchiveContent(PhingFile $zipfile) { $zip = new ZipArchive(); $zip->open($zipfile->getAbsolutePath()); $content = array(); for ($i = 0; $i < $zip->numFiles; $i++) { $content[] = $zip->getNameIndex($i); } return $content; } }