source: branches/feature-templates/html/admin/design/up_down.php @ 15775

Revision 15775, 7.9 KB checked in by adachi, 15 years ago (diff)

テンプレート管理機能仮コミット

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-httpd-php
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7require_once '../require.php';
8require_once DATA_PATH . "module/Tar.php";
9require_once DATA_PATH . 'include/file_manager.inc';
10
11// ¥í¥°¥¤¥ó¥Á¥§¥Ã¥¯
12sfIsSuccess(new SC_Session());
13
14class 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
28switch(lfGetMode()) {
29
30// ¥À¥¦¥ó¥í¡¼¥É¥Ü¥¿¥ó²¡²¼»þ¤Î½èÍý
31case 'download':
32    lfDownloadCreatedFiles();
33    exit;
34    break;
35
36// ¥¤¥ó¥Ý¡¼¥È¥Ü¥¿¥ó²¡²¼»þ¤Î½èÍý
37case '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// ½é²óɽ¼¨
61default:
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 */
76function 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 */
85function 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 */
98function 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 */
113function 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 */
162function 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 */
183function 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 */
207function lfRegisterTemplates($arrForm) {
208    $objQuery = new SC_Query();
209    $objQuery->insert('dtb_templates', $arrForm);
210}
211/**
212 * ¥æ¡¼¥¶¤¬ºîÀ®¤·¤¿¥Õ¥¡¥¤¥ë¤ò¥¢¡¼¥«¥¤¥Ö¤·¥À¥¦¥ó¥í¡¼¥É¤µ¤»¤ë
213 *
214 * @param void
215 * @return void
216 */
217function 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 */
257function 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 */
275function 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 */
287function 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?>
Note: See TracBrowser for help on using the repository browser.