private static function doParse($source) { // 附件 $attachments = array(); $data = array('meta' => self::generateMeta(), 'topic' => self::parseTopic($source, $attachments)); $content = Tpl::compile("xmind/content.xml", $data); $meta = Tpl::compile("xmind/meta.xml"); $revisionsData = self::getRevisionsData(); $revisions = Tpl::compile("xmind/revisions.xml", array('meta' => $data['meta'], 'revisions' => $revisionsData)); $rev = Tpl::compile("xmind/rev.xml", $data); $manifest = Tpl::compile("xmind/manifest.xml", array('meta' => $data['meta'], 'revisions' => $revisionsData, 'attachments' => $attachments)); $path = self::write($data['meta'], array('content' => $content, 'meta' => $meta, 'revisions' => $revisions, 'rev' => $rev, 'manifest' => $manifest, 'attachments' => $attachments)); $archivePath = Ziper::compress($path); return self::move($data['meta'], $archivePath); }
private static function _compress($archive, $filepath, $path) { if (!file_exists($filepath)) { return; } if (is_dir($filepath)) { $childs = scandir($filepath); foreach ($childs as $f) { if ($f == "." || $f == "..") { continue; } Ziper::_compress($archive, $filepath . '/' . $f, $path); } } else { $archive->addFile($filepath, str_replace($path, "", $filepath)); } }