function unZip($themeName, $filename, $tmp_path) { $base_upload_dir = get_base_upload_dir(); $archive_file = $base_upload_dir . '/' . $filename . '.tmp'; $tmp_dir = $base_upload_dir . '/zip-data.tmp'; FilesHelper::emptyDirRecursive($tmp_dir); $archive = new PclZip($archive_file); if (0 == $archive->extract(PCLZIP_OPT_PATH, $tmp_dir)) { return array('status' => 'error', 'message' => "<p><b>Invalid zip</b></p>Extract error : " . $archive->errorInfo(true)); } $fso = FilesHelper::generateFso($tmp_dir); FilesHelper::deleteFile($archive_file); FilesHelper::emptyDirRecursive($tmp_dir); return array('status' => 'done', 'fso' => $fso); }
private function _fixPreviewImagePaths() { $fixStr = "{assign var=theme_name value=\$tpl_dir|regex_replace:'/(.*)([\\/\\\\\\]themes[\\/\\\\\\])(.*)(_preview[\\/\\\\\\]\$)/':'\$3'}"; $fixStr1 = "{if \$isBdPreview && !file_exists(\"\$tpl_dir/img/"; $dirs = array($this->_previewThemeDir, $this->_themeDir); foreach ($dirs as $dir) { foreach (FilesHelper::enumerateFiles($dir) as $file) { $info = pathinfo($file['name']); $name = $info['filename']; $fileExt = isset($info['extension']) && $info['extension'] ? $info['extension'] : ''; if (!in_array($fileExt, array('tpl'))) { continue; } $content = $file['content']; $content = str_replace('"' . $fixStr1, '"' . $fixStr . $fixStr1, $content, $count); $content = preg_replace('/({assign var=p value="{\\$img_dir}..\\/..\\/)(.*?)(\\/)/', '$1{\\$theme_name}$3', $content); if ($count > 0) { FilesHelper::writeFile($file['path'], $content); } } } FilesHelper::emptyDirRecursive($this->_previewThemeDir . '/img', false); }