| <? | |
| include("zipstream/phpHTMLParser.php"); | |
| include("../Epsilon.php"); | |
| require("zipstream/zipstream.php"); | |
| //error_reporting(-1); | |
| error_reporting( error_reporting() & ~E_NOTICE ); | |
| $files = array(); | |
| $examples = Epsilon::getSVNExamplesLocation(); | |
| $example = strip_tags($_REQUEST['example']); | |
| if (!isset($example)) die; | |
| $root = $examples.$example; | |
| collect($root, "/", $files); | |
| # create new zip stream object | |
| $zip = new ZipStream($example.'.zip', array()); | |
| # common file options | |
| $file_opt = array( | |
| # file creation time | |
| 'time' => time(), | |
| ); | |
| foreach ($files as $file) { | |
| $data = file_get_contents($root.$file); | |
| $zip->add_file(substr($file,1), $data, $file_opt); | |
| } | |
| # finish archive | |
| $zip->finish(); | |
| function collect($basePath, $relativePath, &$files) { | |
| $content = file_get_contents($basePath.$relativePath); | |
| $parser = new phpHTMLParser("$content"); | |
| $HTMLObject = $parser->parse_tags(array("a", "title")); | |
| $aTags = $HTMLObject->getTagsByName("a"); | |
| foreach ($aTags as $a) { | |
| $href = $a->href; | |
| if ($href != "") { | |
| if ($href != "../" && $href!="http://subversion.tigris.org/") { | |
| if (substr($href, strlen($href)-1) == "/") { | |
| collect($basePath, $relativePath.$href, $files); | |
| } | |
| else { | |
| $files[] = $relativePath.$href; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ?> |