1 | <?php |
---|
2 | /* |
---|
3 | * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved. |
---|
4 | * |
---|
5 | * http://www.lockon.co.jp/ |
---|
6 | */ |
---|
7 | require_once '../require.php'; |
---|
8 | require_once DATA_PATH . "module/Tar.php"; |
---|
9 | require_once DATA_PATH . 'include/file_manager.inc'; |
---|
10 | |
---|
11 | // ¥í¥°¥¤¥ó¥Á¥§¥Ã¥¯ |
---|
12 | sfIsSuccess(new SC_Session()); |
---|
13 | |
---|
14 | class LC_Page { |
---|
15 | var $tpl_mainpage = 'design/up_down.tpl'; |
---|
16 | var $tpl_subnavi = 'design/subnavi.tpl'; |
---|
17 | var $tpl_subno = 'up_down'; |
---|
18 | var $tpl_mainno = "design"; |
---|
19 | var $tpl_subtitle = '¥¢¥Ã¥×¥í¡¼¥É/¥À¥¦¥ó¥í¡¼¥É'; |
---|
20 | |
---|
21 | var $arrErr = array(); |
---|
22 | var $arrForm = array(); |
---|
23 | } |
---|
24 | |
---|
25 | $objPage = new LC_Page(); |
---|
26 | $objPage->now_template = lfGetNowTemplate(); |
---|
27 | |
---|
28 | switch(lfGetMode()) { |
---|
29 | |
---|
30 | // ¥À¥¦¥ó¥í¡¼¥É¥Ü¥¿¥ó²¡²¼»þ¤Î½èÍý |
---|
31 | case 'download': |
---|
32 | lfDownloadCreatedFiles(); |
---|
33 | exit; |
---|
34 | break; |
---|
35 | |
---|
36 | // ¥¤¥ó¥Ý¡¼¥È¥Ü¥¿¥ó²¡²¼»þ¤Î½èÍý |
---|
37 | case 'upload': |
---|
38 | // ¥Õ¥©¡¼¥à¥Ñ¥é¥á¡¼¥¿½é´ü²½ |
---|
39 | $objForm = lfInitUpload(); |
---|
40 | // ¥¨¥é¡¼¥Á¥§¥Ã¥¯ |
---|
41 | if ($arrErr = lfValidateUpload($objForm)) { |
---|
42 | $objPage->arrErr = $arrErr; |
---|
43 | $objPage->arrForm = $objForm->getFormParamList(); |
---|
44 | break; |
---|
45 | } |
---|
46 | // ¥¢¥Ã¥×¥í¡¼¥É¥Õ¥¡¥¤¥ë½é´ü²½ |
---|
47 | $objUpFile = lfInitUploadFile($objForm); |
---|
48 | // °ì»þ¥Õ¥¡¥¤¥ë¤ØÊݸ |
---|
49 | $errMsg = $objUpFile->makeTempFile('template_file', false); |
---|
50 | // ½ñ¤¹þ¤ß¥¨¥é¡¼¥Á¥§¥Ã¥¯ |
---|
51 | if(isset($errMsg)) { |
---|
52 | $objPage->arrErr['template_file'] = $errMsg; |
---|
53 | $objPage->arrForm = $objForm->getFormParamList(); |
---|
54 | break; |
---|
55 | } |
---|
56 | lfAddTemplates($objForm, $objUpFile); |
---|
57 | $objPage->tpl_onload = "alert('¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¤ò¥¢¥Ã¥×¥í¡¼¥É¤·¤Þ¤·¤¿¡£');"; |
---|
58 | break; |
---|
59 | |
---|
60 | // ½é²óɽ¼¨ |
---|
61 | default: |
---|
62 | break; |
---|
63 | } |
---|
64 | |
---|
65 | // ²èÌ̤Îɽ¼¨ |
---|
66 | $objView = new SC_AdminView(); |
---|
67 | $objView->assignobj($objPage); |
---|
68 | $objView->display(MAIN_FRAME); |
---|
69 | |
---|
70 | /** |
---|
71 | * POST¤µ¤ì¤ëmode¥Ñ¥é¥á¡¼¥¿¤ò¼èÆÀ¤¹¤ë. |
---|
72 | * |
---|
73 | * @param void |
---|
74 | * @return string mode¥Ñ¥é¥á¡¼¥¿, ̵¤±¤ì¤Ðnull |
---|
75 | */ |
---|
76 | function lfGetMode(){ |
---|
77 | if (isset($_POST['mode'])) return $_POST['mode']; |
---|
78 | } |
---|
79 | /** |
---|
80 | * SC_UploadFile¥¯¥é¥¹¤Î½é´ü²½. |
---|
81 | * |
---|
82 | * @param object $objForm SC_FormParam¤Î¥¤¥ó¥¹¥¿¥ó¥¹ |
---|
83 | * @return object SC_UploadFile¤Î¥¤¥ó¥¹¥¿¥ó¥¹ |
---|
84 | */ |
---|
85 | function lfInitUploadFile($objForm) { |
---|
86 | $pkg_dir = TPL_PKG_PATH . $objForm->getValue('template_code'); |
---|
87 | $objUpFile = new SC_UploadFile(TEMPLATE_TEMP_DIR, $pkg_dir); |
---|
88 | $objUpFile->addFile("¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë", 'template_file', array(), TEMPLATE_SIZE, true, 0, 0, false); |
---|
89 | |
---|
90 | return $objUpFile; |
---|
91 | } |
---|
92 | /** |
---|
93 | * SC_FormParam¥¯¥é¥¹¤Î½é´ü²½. |
---|
94 | * |
---|
95 | * @param void |
---|
96 | * @retrun object SC_FormParam¤Î¥¤¥ó¥¹¥¿¥ó¥¹ |
---|
97 | */ |
---|
98 | function lfInitUpload() { |
---|
99 | $objForm = new SC_FormParam; |
---|
100 | |
---|
101 | $objForm->addParam("¥Æ¥ó¥×¥ì¡¼¥È¥³¡¼¥É", "template_code", STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK", "ALNUM_CHECK")); |
---|
102 | $objForm->addParam("¥Æ¥ó¥×¥ì¡¼¥È̾", "template_name", STEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); |
---|
103 | $objForm->setParam($_POST); |
---|
104 | |
---|
105 | return $objForm; |
---|
106 | } |
---|
107 | /** |
---|
108 | * upload¥â¡¼¥É¤Î¥Ñ¥é¥á¡¼¥¿¸¡¾Ú¤ò¹Ô¤¦. |
---|
109 | * |
---|
110 | * @param object $objForm SC_FormParam¤Î¥¤¥ó¥¹¥¿¥ó¥¹ |
---|
111 | * @return array ¥¨¥é¡¼¾ðÊó¤ò³ÊǼ¤·¤¿Ï¢ÁÛÇÛÎó, ¥¨¥é¡¼¤¬Ìµ¤±¤ì¤Ð(¿ʬ)null¤òÊÖ¤¹ |
---|
112 | */ |
---|
113 | function lfValidateUpload($objForm) { |
---|
114 | $arrErr = $objForm->checkError(); |
---|
115 | if (!empty($arrErr)) { |
---|
116 | return $arrErr; |
---|
117 | } |
---|
118 | |
---|
119 | $arrForm = $objForm->getHashArray(); |
---|
120 | |
---|
121 | // Ʊ̾¤Î¥Õ¥©¥ë¥À¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ï¥¨¥é¡¼ |
---|
122 | if(file_exists(USER_TEMPLATE_PATH . $arrForm['template_code'])) { |
---|
123 | $arrErr['template_code'] = "¢¨ Ʊ̾¤Î¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Þ¤¹¡£<br/>"; |
---|
124 | } |
---|
125 | |
---|
126 | // DB¤Ë¤¹¤Ç¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤Ê¤¤¤«¥Á¥§¥Ã¥¯ |
---|
127 | $objQuery = new SC_Query(); |
---|
128 | $ret = $objQuery->count("dtb_templates", "template_code = ?", array($arrForm['template_code'])); |
---|
129 | if(!empty($ret)) { |
---|
130 | $arrErr['template_code'] = "¢¨ ¤¹¤Ç¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥Æ¥ó¥×¥ì¡¼¥È¥³¡¼¥É¤Ç¤¹¡£<br/>"; |
---|
131 | } |
---|
132 | |
---|
133 | // ¥Õ¥¡¥¤¥ë¤Î³ÈÄ¥»Ò¥Á¥§¥Ã¥¯(.tar/tar.gz¤Î¤ßµö²Ä) |
---|
134 | $errFlag = true; |
---|
135 | $array_ext = explode(".", $_FILES['template_file']['name']); |
---|
136 | $ext = $array_ext[ count ( $array_ext ) - 1 ]; |
---|
137 | $ext = strtolower($ext); |
---|
138 | // .tar¥Á¥§¥Ã¥¯ |
---|
139 | if ($ext == 'tar') { |
---|
140 | $errFlag = false; |
---|
141 | } |
---|
142 | $ext = $array_ext[ count ( $array_ext ) - 2 ].".".$ext; |
---|
143 | $ext = strtolower($ext); |
---|
144 | // .tar.gz¥Á¥§¥Ã¥¯ |
---|
145 | if ($ext== 'tar.gz') { |
---|
146 | $errFlag = false; |
---|
147 | } |
---|
148 | |
---|
149 | if($errFlag) { |
---|
150 | $arrErr['template_file'] = "¢¨ ¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¤Çµö²Ä¤µ¤ì¤Æ¤¤¤ë·Á¼°¤Ï¡¢tar/tar.gz¤Ç¤¹¡£<br />"; |
---|
151 | } |
---|
152 | |
---|
153 | return $arrErr; |
---|
154 | } |
---|
155 | /** |
---|
156 | * DB¤ª¤è¤ÓTPL_PKG_PATH¤Ë¥Æ¥ó¥×¥ì¡¼¥È¥Ñ¥Ã¥±¡¼¥¸¤òÄɲ乤ë. |
---|
157 | * |
---|
158 | * @param object $objForm SC_FormParam¤Î¥¤¥ó¥¹¥¿¥ó¥¹ |
---|
159 | * @param object $objUpFile SC_UploadFile¤Î¥¤¥ó¥¹¥¿¥ó¥¹ |
---|
160 | * @return void |
---|
161 | */ |
---|
162 | function lfAddTemplates($objForm, $objUpFile) { |
---|
163 | $pkg_dir = TPL_PKG_PATH . $objForm->getValue('template_code'); |
---|
164 | // ¥Õ¥©¥ë¥ÀºîÀ® |
---|
165 | $ret = @mkdir($pkg_dir); |
---|
166 | // °ì»þ¥Õ¥©¥ë¥À¤«¤éÊݸ¥Ç¥£¥ì¥¯¥È¥ê¤Ø°Üư |
---|
167 | $objUpFile->moveTempFile(); |
---|
168 | // ²òÅà |
---|
169 | lfUnpacking($pkg_dir, $_FILES['template_file']['name']); |
---|
170 | // DB¤Ë¥Æ¥ó¥×¥ì¡¼¥È¾ðÊó¤òÊݸ |
---|
171 | lfRegisterTemplates($objForm->getHashArray()); |
---|
172 | } |
---|
173 | /** |
---|
174 | * ¥¢¥Ã¥×¥í¡¼¥É¤µ¤ì¤¿tar¥¢¡¼¥«¥¤¥Ö¤ò²òÅह¤ë. |
---|
175 | * |
---|
176 | * TODO ½èÍý¤¬¤ï¤«¤ê¤Ë¤¯¤¤¤Î¤Çľ¤¹, |
---|
177 | * $file_name¤Ï$objUpFile¤Î½é´ü²½»þ¤ËTPL_PKG_PATH¤¬ÊݸÀè¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤¿¤áɬÍפʤó¤Ç¤¹ |
---|
178 | * |
---|
179 | * @param string $dir ²òÅàÀè¥Ç¥£¥ì¥¯¥È¥ê |
---|
180 | * @param strin $file_name ¥¢¡¼¥«¥¤¥Ö¤Î¥Õ¥¡¥¤¥ë̾ |
---|
181 | * @return string Archive_Tar::extractModify()¤Î¥¨¥é¡¼ |
---|
182 | */ |
---|
183 | function lfUnpacking($dir, $file_name) { |
---|
184 | |
---|
185 | // °µ½Ì¥Õ¥é¥°TRUE¤Ïgzip²òÅà¤ò¤ª¤³¤Ê¤¦ |
---|
186 | $tar = new Archive_Tar("$dir/$file_name", true); |
---|
187 | |
---|
188 | // ³ÈÄ¥»Ò¤òÀÚ¤ê¼è¤ë |
---|
189 | $unpacking_name = preg_replace("/(\.tar|\.tar\.gz)$/", "", $file_name); |
---|
190 | |
---|
191 | // »ØÄꤵ¤ì¤¿¥Õ¥©¥ë¥ÀÆâ¤Ë²òÅह¤ë |
---|
192 | $err = $tar->extractModify("$dir/", $unpacking_name); |
---|
193 | |
---|
194 | // ¥Õ¥©¥ë¥Àºï½ü |
---|
195 | @sfDelFile("$dir/$unpacking_name"); |
---|
196 | // °µ½Ì¥Õ¥¡¥¤¥ëºï½ü |
---|
197 | @unlink("$dir/$file_name"); |
---|
198 | |
---|
199 | return $err; |
---|
200 | } |
---|
201 | /** |
---|
202 | * dtb_templates¤ØÆþÎÏÆâÍÆ¤òÅÐÏ¿¤¹¤ë. |
---|
203 | * |
---|
204 | * @param array $arrForm POST¤µ¤ì¤¿¥Ñ¥é¥á¡¼¥¿ |
---|
205 | * @return void |
---|
206 | */ |
---|
207 | function lfRegisterTemplates($arrForm) { |
---|
208 | $objQuery = new SC_Query(); |
---|
209 | $objQuery->insert('dtb_templates', $arrForm); |
---|
210 | } |
---|
211 | /** |
---|
212 | * ¥æ¡¼¥¶¤¬ºîÀ®¤·¤¿¥Õ¥¡¥¤¥ë¤ò¥¢¡¼¥«¥¤¥Ö¤·¥À¥¦¥ó¥í¡¼¥É¤µ¤»¤ë |
---|
213 | * |
---|
214 | * @param void |
---|
215 | * @return void |
---|
216 | */ |
---|
217 | function lfDownloadCreatedFiles() { |
---|
218 | $dlFileName = 'tpl_package_' . date('YmdHis') . '.tar.gz'; |
---|
219 | $tmpDir = TEMPLATE_TEMP_DIR . time() . '/'; |
---|
220 | $tmpUserEditDir = $tmpDir . 'user_edit/'; |
---|
221 | |
---|
222 | if (!mkdir($tmpDir)) return ; |
---|
223 | if (!mkdir($tmpUserEditDir)) return ; |
---|
224 | |
---|
225 | lfCopyTplPackage($tmpDir); |
---|
226 | lfCopyUserEdit($tmpUserEditDir); |
---|
227 | |
---|
228 | // ¥Õ¥¡¥¤¥ë°ìÍ÷¼èÆÀ |
---|
229 | $arrFileHash = sfGetFileList($tmpDir); |
---|
230 | foreach($arrFileHash as $val) { |
---|
231 | $arrFileList[] = $val['file_name']; |
---|
232 | } |
---|
233 | |
---|
234 | // ¥Ç¥£¥ì¥¯¥È¥ê¤ò°Üư |
---|
235 | chdir($tmpDir); |
---|
236 | // °µ½Ì¤ò¤ª¤³¤Ê¤¦ |
---|
237 | $tar = new Archive_Tar($dlFileName, true); |
---|
238 | $tar->create($arrFileList); |
---|
239 | |
---|
240 | // ¥À¥¦¥ó¥í¡¼¥ÉÍÑHTTP¥Ø¥Ã¥À½ÐÎÏ |
---|
241 | header("Content-disposition: attachment; filename=${dlFileName}"); |
---|
242 | header("Content-type: application/octet-stream; name=${dlFileName}"); |
---|
243 | header("Content-Length: " . filesize($dlFileName)); |
---|
244 | readfile($dlFileName); |
---|
245 | |
---|
246 | // °µ½Ì¥Õ¥¡¥¤¥ëºï½ü |
---|
247 | unlink($dlFileName); |
---|
248 | // °ì»þ¥Õ¥©¥ë¥Àºï½ü |
---|
249 | sfDelFile($tmpDir); |
---|
250 | } |
---|
251 | /** |
---|
252 | * ¥Ç¥¶¥¤¥ó´ÉÍý¤ÇºîÀ®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤òupload/temp_template/°Ê²¼¤Ë¥³¥Ô¡¼¤¹¤ë |
---|
253 | * |
---|
254 | * @param string $to |
---|
255 | * @return void |
---|
256 | */ |
---|
257 | function lfCopyUserEdit($to) { |
---|
258 | $arrDirs = array( |
---|
259 | 'css', |
---|
260 | 'include', |
---|
261 | 'templates' |
---|
262 | ); |
---|
263 | |
---|
264 | foreach ($arrDirs as $dir) { |
---|
265 | $from = USER_PATH . $dir; |
---|
266 | sfCopyDir($from, $to, '', true); |
---|
267 | } |
---|
268 | } |
---|
269 | /** |
---|
270 | * ¸½ºßÁªÂò¤·¤Æ¤¤¤ë¥Æ¥ó¥×¥ì¡¼¥È¥Ñ¥Ã¥±¡¼¥¸¤òupload/temp_template/°Ê²¼¤Ë¥³¥Ô¡¼¤¹¤ë |
---|
271 | * |
---|
272 | * @param string $to ÊݸÀè¥Ñ¥¹ |
---|
273 | * @return void |
---|
274 | */ |
---|
275 | function lfCopyTplPackage($to) { |
---|
276 | $nowTpl = lfGetNowTemplate(); |
---|
277 | $from = TPL_PKG_PATH . $nowTpl . '/'; |
---|
278 | |
---|
279 | sfCopyDir($from, $to, ''); |
---|
280 | } |
---|
281 | /** |
---|
282 | * ¸½ºßŬÍѤ·¤Æ¤¤¤ë¥Æ¥ó¥×¥ì¡¼¥È¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ò¼èÆÀ¤¹¤ë. |
---|
283 | * |
---|
284 | * @param void |
---|
285 | * @return string ¥Æ¥ó¥×¥ì¡¼¥È¥Ñ¥Ã¥±¡¼¥¸Ì¾ |
---|
286 | */ |
---|
287 | function lfGetNowTemplate() { |
---|
288 | $objQuery = new SC_Query(); |
---|
289 | $arrRet = $objQuery->select('top_tpl', 'dtb_baseinfo'); |
---|
290 | if (isset($arrRet[0]['top_tpl'])) { |
---|
291 | return $arrRet[0]['top_tpl']; |
---|
292 | } |
---|
293 | return null; |
---|
294 | } |
---|
295 | |
---|
296 | ?> |
---|