/** * user skin export * @return Object */ public function procShopToolUserSkinExport(){ if(!$this->module_srl) return new Object('-1','msg_invalid_request'); $oShopModel = $this->model; $skin_path = FileHandler::getRealPath($oShopModel->getShopPath($this->module_srl)); $tar_list = FileHandler::readDir($skin_path,'/(\.css|\.html|\.htm|\.js)$/'); $img_list = FileHandler::readDir($skin_path."img",'/(\.png|\.jpeg|\.jpg|\.gif|\.swf)$/'); for($i=0,$c=count($img_list);$i<$c;$i++) $tar_list[] = 'img/' . $img_list[$i]; $userimages_list = FileHandler::readDir($skin_path."user_images",'/(\.png|\.jpeg|\.jpg|\.gif|\.swf)$/'); for($i=0,$c=count($userimages_list);$i<$c;$i++) $tar_list[] = 'user_images/' . $userimages_list[$i]; require_once(_XE_PATH_.'libs/tar.class.php'); chdir($skin_path); $tar = new tar(); $replace_path = getNumberingPath($this->module_srl,3); foreach($tar_list as $key => $file) $tar->addFile($file,$replace_path,'__SHOP_SKIN_PATH__'); $stream = $tar->toTarStream(); $filename = 'ShopUserSkin_' . date('YmdHis') . '.tar'; header("Cache-Control: "); header("Pragma: "); header("Content-Type: application/x-compressed"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header('Content-Disposition: attachment; filename="'. $filename .'"'); header("Content-Transfer-Encoding: binary\n"); echo $stream; Context::close(); exit(); }
/** * export user layout * @return void */ function procLayoutAdminUserLayoutExport() { $layout_srl = Context::get('layout_srl'); if (!$layout_srl) { return new Object('-1', 'msg_invalid_request'); } require_once _XE_PATH_ . 'libs/tar.class.php'; $oLayoutModel = getModel('layout'); // Copy files to temp path $file_path = $oLayoutModel->getUserLayoutPath($layout_srl); $target_path = $oLayoutModel->getUserLayoutPath(0); FileHandler::copyDir($file_path, $target_path); // replace path and ini config $ini_config = $oLayoutModel->getUserLayoutIniConfig(0); $file_list = $oLayoutModel->getUserLayoutFileList($layout_srl); unset($file_list[2]); foreach ($file_list as $file) { if (strncasecmp('images', $file, 6) === 0) { continue; } // replace path $file = $target_path . $file; $content = FileHandler::readFile($file); $pattern = '/(http:\\/\\/[^ ]+)?(\\.\\/)?' . str_replace('/', '\\/', str_replace('./', '', $file_path)) . '/'; if (basename($file) == 'faceoff.css' || basename($file) == 'layout.css') { $content = preg_replace($pattern, '../', $content); } else { $content = preg_replace($pattern, './', $content); } // replace ini config foreach ($ini_config as $key => $value) { $content = str_replace('{$layout_info->faceoff_ini_config[\'' . $key . '\']}', $value, $content); } FileHandler::writeFile($file, $content); } // make info.xml $info_file = $target_path . 'conf/info.xml'; FileHandler::copyFile('./modules/layout/faceoff/conf/info.xml', $info_file); $content = FileHandler::readFile($info_file); $content = str_replace('type="faceoff"', '', $content); FileHandler::writeFile($info_file, $content); $file_list[] = 'conf/info.xml'; // make css file $css_file = $target_path . 'css/layout.css'; FileHandler::copyFile('./modules/layout/faceoff/css/layout.css', $css_file); $content = FileHandler::readFile('./modules/layout/tpl/css/widget.css'); FileHandler::writeFile($css_file, "\n" . $content, 'a'); $content = FileHandler::readFile($target_path . 'faceoff.css'); FileHandler::writeFile($css_file, "\n" . $content, 'a'); $content = FileHandler::readFile($target_path . 'layout.css'); FileHandler::writeFile($css_file, "\n" . $content, 'a'); // css load $content = FileHandler::readFile($target_path . 'layout.html'); $content = "<load target=\"css/layout.css\" />\n" . $content; FileHandler::writeFile($target_path . 'layout.html', $content); unset($file_list[3]); unset($file_list[1]); $file_list[] = 'css/layout.css'; // Compress the files $tar = new tar(); $user_layout_path = FileHandler::getRealPath($oLayoutModel->getUserLayoutPath(0)); chdir($user_layout_path); foreach ($file_list as $key => $file) { $tar->addFile($file); } $stream = $tar->toTarStream(); $filename = 'faceoff_' . date('YmdHis') . '.tar'; header("Cache-Control: "); header("Pragma: "); header("Content-Type: application/x-compressed"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // header("Content-Length: " .strlen($stream)); ?? why?? header('Content-Disposition: attachment; filename="' . $filename . '"'); header("Content-Transfer-Encoding: binary\n"); echo $stream; // Close Context and then exit Context::close(); // delete temp path FileHandler::removeDir($target_path); exit; }
/** * @brief faceoff export * **/ function procLayoutAdminUserLayoutExport() { $layout_srl = Context::get('layout_srl'); if (!$layout_srl) { return new Object('-1', 'msg_invalid_request'); } require_once _XE_PATH_ . 'libs/tar.class.php'; // 압축할 파일 목록을 가져온다 $oLayoutModel =& getModel('layout'); $file_list = $oLayoutModel->getUserLayoutFileList($layout_srl); // 압축을 한다. $tar = new tar(); $user_layout_path = FileHandler::getRealPath($oLayoutModel->getUserLayoutPath($layout_srl)); chdir($user_layout_path); $replace_path = getNumberingPath($layout_srl, 3); foreach ($file_list as $key => $file) { $tar->addFile($file, $replace_path, '__LAYOUT_PATH__'); } $stream = $tar->toTarStream(); $filename = 'faceoff_' . date('YmdHis') . '.tar'; header("Cache-Control: "); header("Pragma: "); header("Content-Type: application/x-compressed"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // header("Content-Length: " .strlen($stream)); ?? why?? header('Content-Disposition: attachment; filename="' . $filename . '"'); header("Content-Transfer-Encoding: binary\n"); echo $stream; // Context를 강제로 닫고 종료한다. Context::close(); exit; }