/** * Method to create sub directories within the zip archive * * @param array $branch * @param string $level * @param string $orig * @return void */ public function addDir($branch, $level = null, $orig = null) { if (!is_array($branch)) { $dir = new Dir($branch); $branch = $dir->getTree(); } foreach ($branch as $leaf => $node) { if (is_array($node)) { if (null === $level) { $new = basename($leaf); $orig = substr($leaf, 0, strrpos($leaf, $new)); } else { $new = $level . $leaf; } $this->archive->addEmptyDir($new); $this->addDir($node, $new, $orig); } else { $this->archive->addFile($orig . $level . '/' . $node, $level . '/' . $node); } } }