Chris@0: tar = new ArchiveTar($file_path); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function add($file_path) { Chris@0: $this->tar->add($file_path); Chris@0: Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function remove($file_path) { Chris@0: // @todo Archive_Tar doesn't have a remove operation Chris@0: // so we'll have to simulate it somehow, probably by Chris@0: // creating a new archive with everything but the removed Chris@0: // file. Chris@0: Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function extract($path, array $files = []) { Chris@0: if ($files) { Chris@0: $this->tar->extractList($files, $path); Chris@0: } Chris@0: else { Chris@0: $this->tar->extract($path); Chris@0: } Chris@0: Chris@0: return $this; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function listContents() { Chris@0: $files = []; Chris@0: foreach ($this->tar->listContent() as $file_data) { Chris@0: $files[] = $file_data['filename']; Chris@0: } Chris@0: return $files; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Retrieves the tar engine itself. Chris@0: * Chris@0: * In some cases it may be necessary to directly access the underlying Chris@0: * Archive_Tar object for implementation-specific logic. This is for advanced Chris@0: * use only as it is not shared by other implementations of ArchiveInterface. Chris@0: * Chris@0: * @return Archive_Tar Chris@0: * The Archive_Tar object used by this object. Chris@0: */ Chris@0: public function getArchive() { Chris@0: return $this->tar; Chris@0: } Chris@0: Chris@0: }