source: branches/rel/html/admin/design/main_edit.php @ 12157

Revision 12157, 11.2 KB checked in by uehara, 16 years ago (diff)
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 . "include/page_layout.inc");
9
10class LC_Page {
11    var $arrForm;
12    var $arrHidden;
13
14    function LC_Page() {
15        $this->tpl_mainpage = 'design/main_edit.tpl';
16        $this->tpl_subnavi  = 'design/subnavi.tpl';
17        $this->user_URL     = USER_URL;
18        $this->text_row     = 13;
19        $this->tpl_subno = "main_edit";
20        $this->tpl_mainno = "design";
21        $this->tpl_subtitle = '¥Ú¡¼¥¸¾ÜºÙÀßÄê';
22    }
23}
24$objPage = new LC_Page();
25$objView = new SC_AdminView();
26
27// ǧ¾Ú²ÄÈݤÎȽÄê
28$objSess = new SC_Session();
29sfIsSuccess($objSess);
30
31// ¥Ú¡¼¥¸°ìÍ÷¤ò¼èÆÀ
32$objPage->arrPageList = lfgetPageData();
33
34// ¥Ö¥í¥Ã¥¯ID¤ò¼èÆÀ
35if (isset($_POST['page_id'])) {
36    $page_id = $_POST['page_id'];
37}else if ($_GET['page_id']){
38    $page_id = $_GET['page_id'];
39}else{
40    $page_id = '';
41}
42
43$objPage->page_id = $page_id;
44
45// ¥á¥Ã¥»¡¼¥¸É½¼¨
46if ($_GET['msg'] == "on"){
47    $objPage->tpl_onload="alert('ÅÐÏ¿¤¬´°Î»¤·¤Þ¤·¤¿¡£');";
48}
49
50// page_id ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¥Æ¥ó¥×¥ì¡¼¥È¥Ç¡¼¥¿¤Î¼èÆÀ
51if (is_numeric($page_id) and $page_id != '') {
52    $arrPageData = lfgetPageData(" page_id = ? " , array($page_id));
53
54    if ($arrPageData[0]['tpl_dir'] === "") {
55        $objPage->arrErr['page_id_err'] = "¢¨ »ØÄꤵ¤ì¤¿¥Ú¡¼¥¸¤ÏÊÔ½¸¤Ç¤­¤Þ¤»¤ó¡£";
56        // ²èÌ̤Îɽ¼¨
57        $objView->assignobj($objPage);
58        $objView->display(MAIN_FRAME);
59        exit;
60    }
61
62    // ¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Æ¤¤¤ì¤ÐÆɤ߹þ¤à
63    $tpl_file = HTML_PATH . $arrPageData[0]['tpl_dir'] . $arrPageData[0]['filename'] . ".tpl";
64    if (file_exists($tpl_file)){
65        $arrPageData[0]['tpl_data'] = file_get_contents($tpl_file);     
66    }
67
68    // ¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤ÎÃÍÊѹ¹
69    $arrPageData[0]['header_chk'] = sfChangeCheckBox($arrPageData[0]['header_chk'], true);
70    $arrPageData[0]['footer_chk'] = sfChangeCheckBox($arrPageData[0]['footer_chk'], true);
71
72    // ¥Ç¥£¥ì¥¯¥È¥ê¤ò²èÌÌɽ¼¨ÍѤËÊÔ½¸
73    $arrPageData[0]['directory'] = str_replace( USER_DIR,'', $arrPageData[0]['php_dir']);
74   
75    $objPage->arrPageData = $arrPageData[0];
76}
77
78// ¥×¥ì¥Ó¥å¡¼½èÍý
79if ($_POST['mode'] == 'preview') {
80   
81    $page_id_old = $page_id;
82    $page_id = "0";
83    $url = uniqid("");
84
85    $_POST['page_id'] = $page_id;
86    $_POST['url'] = $url;
87   
88    $arrPreData = lfgetPageData(" page_id = ? " , array($page_id));
89
90    // tpl¥Õ¥¡¥¤¥ë¤Îºï½ü
91    $del_tpl = USER_PATH . "templates/" . $arrPreData[0]['filename'] . '.tpl';
92    if (file_exists($del_tpl)){
93        unlink($del_tpl);   
94    }
95
96    // DB¤Ø¥Ç¡¼¥¿¤ò¹¹¿·¤¹¤ë
97    lfEntryPageData($_POST);
98
99    // TPL¥Õ¥¡¥¤¥ëºîÀ®
100    $cre_tpl = USER_PATH . "templates/" . $url . '.tpl';
101    lfCreateFile($cre_tpl);
102   
103    // blocposition ¤òºï½ü
104    $objDBConn = new SC_DbConn;     // DBÁàºî¥ª¥Ö¥¸¥§¥¯¥È
105    $sql = 'delete from dtb_blocposition where page_id = 0';
106    $ret = $objDBConn->query($sql);
107   
108    if ($page_id_old != "") {
109        // ÅÐÏ¿¥Ç¡¼¥¿¤ò¼èÆÀ
110        $sql = "SELECT 0, target_id, bloc_id, bloc_row FROM dtb_blocposition WHERE page_id = ?";
111        $ret = $objDBConn->getAll($sql,array($page_id_old));
112       
113        if (count($ret) > 0) {
114           
115            // blocposition ¤òÊ£À½
116            $sql = " insert into dtb_blocposition (";
117            $sql .= "     page_id,";
118            $sql .= "     target_id,";
119            $sql .= "     bloc_id,";
120            $sql .= "     bloc_row";
121            $sql .= "     )values(?, ?, ?, ?)";
122           
123            // ¼èÆÀ·ï¿ôʸINSERT¼Â¹Ô
124            foreach($ret as $key => $val){
125                $ret = $objDBConn->query($sql,$val);
126            }
127        }
128
129    }
130   
131    $_SESSION['preview'] = "ON";
132   
133    header("location: " . URL_DIR . "preview/index.php");
134}
135
136// ¥Ç¡¼¥¿ÅÐÏ¿½èÍý
137if ($_POST['mode'] == 'confirm') {
138   
139    // ¥¨¥é¡¼¥Á¥§¥Ã¥¯
140    $objPage->arrErr = lfErrorCheck($_POST);
141
142    // ¥¨¥é¡¼¤¬¤Ê¤±¤ì¤Ð¹¹¿·½èÍý¤ò¹Ô¤¦   
143    if (count($objPage->arrErr) == 0) {
144
145        // DB¤Ø¥Ç¡¼¥¿¤ò¹¹¿·¤¹¤ë
146        lfEntryPageData($_POST);
147       
148        // ¥Ù¡¼¥¹¥Ç¡¼¥¿¤Ç¤Ê¤±¤ì¤Ð¥Õ¥¡¥¤¥ë¤òºï½ü¤·¡¢PHP¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë
149        if (!lfCheckBaseData($page_id)) {
150            // ¥Õ¥¡¥¤¥ëºï½ü
151            lfDelFile($arrPageData[0]);
152           
153            // PHP¥Õ¥¡¥¤¥ëºîÀ®
154            $cre_php = USER_PATH . $_POST['url'] . ".php";
155            lfCreatePHPFile($cre_php);
156        }
157
158        // TPL¥Õ¥¡¥¤¥ëºîÀ®
159        $cre_tpl = dirname(USER_PATH . "templates/" . $_POST['url']) . "/" . basename($_POST['url']) . '.tpl';
160
161        lfCreateFile($cre_tpl);
162
163        // ÊÔ½¸²Äǽ¥Ú¡¼¥¸¤Î¾ì¹ç¤Ë¤Î¤ß½èÍý¤ò¹Ô¤¦
164        if ($arrPageData[0]['edit_flg'] != 2) {
165            // ¿·µ¬ºîÀ®¤·¤¿¾ì¹ç¤Î¤¿¤á¤Ë²þ¤Ë¥Ú¡¼¥¸ID¤ò¼èÆÀ¤¹¤ë
166            $arrPageData = lfgetPageData(" url = ? " , array(USER_URL.$_POST['url'].".php"));
167            $page_id = $arrPageData[0]['page_id'];
168        }
169
170        header("location: ./main_edit.php?page_id=$page_id&msg=on");
171    }else{
172        // ¥¨¥é¡¼¤¬¤¢¤ì¤ÐÆþÎÏ»þ¤Î¥Ç¡¼¥¿¤òɽ¼¨¤¹¤ë
173        $objPage->arrPageData = $_POST;
174        $objPage->arrPageData['header_chk'] = sfChangeCheckBox(sfChangeCheckBox($_POST['header_chk']), true);
175        $objPage->arrPageData['footer_chk'] = sfChangeCheckBox(sfChangeCheckBox($_POST['footer_chk']), true);
176        $objPage->arrPageData['directory'] = $_POST['url'];
177        $objPage->arrPageData['filename'] = "";
178    }
179}
180
181// ¥Ç¡¼¥¿ºï½ü½èÍý ¥Ù¡¼¥¹¥Ç¡¼¥¿¤Ç¤Ê¤±¤ì¤Ð¥Õ¥¡¥¤¥ë¤òºï½ü
182if ($_POST['mode'] == 'delete' and  !lfCheckBaseData($page_id)) {
183    lfDelPageData($_POST['page_id']);
184}
185
186// ²èÌ̤Îɽ¼¨
187$objView->assignobj($objPage);
188$objView->display(MAIN_FRAME);
189
190//---------------------------------------------------------------------------------------------------------------------------------------------------------
191/**************************************************************************************************************
192 * ´Ø¿ô̾   ¡§lfEntryPageData
193 * ½èÍýÆâÍÆ ¡§¥Ö¥í¥Ã¥¯¾ðÊó¤ò¹¹¿·¤¹¤ë
194 * °ú¿ô1    ¡§$arrData  Ž¥Ž¥Ž¥ ¹¹¿·¥Ç¡¼¥¿
195 * Ìá¤êÃÍ   ¡§¹¹¿··ë²Ì
196 **************************************************************************************************************/
197function lfEntryPageData($arrData){
198    $objDBConn = new SC_DbConn;     // DBÁàºî¥ª¥Ö¥¸¥§¥¯¥È
199    $sql = "";                      // ¥Ç¡¼¥¿¹¹¿·SQLÀ¸À®ÍÑ
200    $ret = "";                      // ¥Ç¡¼¥¿¹¹¿··ë²Ì³ÊǼÍÑ
201    $arrUpdData = array();          // ¹¹¿·¥Ç¡¼¥¿À¸À®ÍÑ
202    $arrChk = array();              // ÇÓ¾¥Á¥§¥Ã¥¯ÍÑ
203
204    // ¹¹¿·¥Ç¡¼¥¿À¸À®
205    $arrUpdData = lfGetUpdData($arrData);
206   
207    // ¥Ç¡¼¥¿¤¬Â¸ºß¤·¤Æ¤¤¤ë¤«¥Á¥§¥Ã¥¯¤ò¹Ô¤¦
208    if($arrData['page_id'] !== ''){
209        $arrChk = lfgetPageData(" page_id = ?", array($arrData['page_id']));
210    }
211
212    // page_id ¤¬¶õ ¼ã¤·¤¯¤Ï ¥Ç¡¼¥¿¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤ÏINSERT¤ò¹Ô¤¦
213    if ($arrData['page_id'] === '' or !isset($arrChk[0])) {
214        // SQLÀ¸À®
215        $sql = " INSERT INTO dtb_pagelayout ";
216        $sql .= " ( ";
217        $sql .= "     page_name";
218        $sql .= "     ,url";
219        $sql .= "     ,php_dir";
220        $sql .= "     ,tpl_dir";
221        $sql .= "     ,filename";
222        $sql .= "     ,header_chk";
223        $sql .= "     ,footer_chk";
224        $sql .= "     ,update_url";
225        $sql .= "     ,create_date";
226        $sql .= "     ,update_date";
227        $sql .= " ) VALUES ( ?,?,?,?,?,?,?,?,now(),now() )";
228        $sql .= " ";
229    }else{
230        // ¥Ç¡¼¥¿¤¬Â¸ºß¤·¤Æ¤ë¾ì¹ç¤Ë¤Ï¥¢¥Ã¥×¥Ç¡¼¥È¤ò¹Ô¤¦
231        // SQLÀ¸À®
232        $sql = " UPDATE dtb_pagelayout ";
233        $sql .= " SET";
234        $sql .= "     page_name = ? ";
235        $sql .= "     ,url = ? ";
236        $sql .= "     ,php_dir = ? ";
237        $sql .= "     ,tpl_dir = ? ";
238        $sql .= "     ,filename = ? ";
239        $sql .= "     ,header_chk = ? ";
240        $sql .= "     ,footer_chk = ? ";
241        $sql .= "     ,update_url = ? ";
242        $sql .= "     ,update_date = now() ";
243        $sql .= " WHERE page_id = ?";
244        $sql .= " ";
245
246        // ¹¹¿·¥Ç¡¼¥¿¤Ë¥Ö¥í¥Ã¥¯ID¤òÄɲÃ
247        array_push($arrUpdData, $arrData['page_id']);
248    }
249
250    // SQL¼Â¹Ô
251    $ret = $objDBConn->query($sql,$arrUpdData);
252   
253    return $ret;
254}
255
256/**************************************************************************************************************
257 * ´Ø¿ô̾   ¡§lfGetUpdData
258 * ½èÍýÆâÍÆ ¡§DB¤Ø¹¹¿·¤ò¹Ô¤¦¥Ç¡¼¥¿¤òÀ¸À®¤¹¤ë
259 * °ú¿ô1    ¡§$arrData  Ž¥Ž¥Ž¥ ¹¹¿·¥Ç¡¼¥¿
260 * Ìá¤êÃÍ   ¡§¹¹¿·¥Ç¡¼¥¿
261 **************************************************************************************************************/
262function lfGetUpdData($arrData){
263   
264    // ¥Ù¡¼¥¹¥Ç¡¼¥¿¤Î¾ì¹ç¤Ë¤ÏÊѹ¹¤·¤Ê¤¤¡£
265    if (lfCheckBaseData($arrData['page_id'])) {
266        $arrPageData = lfgetPageData( ' page_id = ? ' , array($arrData['page_id']));
267
268        $name = $arrPageData[0]['page_name'] ;
269        $url = $arrPageData[0]['url'];
270        $php_dir = $arrPageData[0]['php_dir'];
271        $tpl_dir = $arrPageData[0]['tpl_dir'];
272        $filename = $arrPageData[0]['filename'];
273    }else{
274        $name = $arrData['page_name'] ;
275        $url = USER_URL.$arrData['url'].".php";
276        $php_dir = dirname(USER_DIR.$arrData['url'])."/";
277        $tpl_dir = dirname(USER_DIR."templates/".$arrData['url'])."/";
278        $filename = basename($arrData['url']);
279    }
280
281    // ¹¹¿·¥Ç¡¼¥¿ÇÛÎó¤ÎºîÀ®
282    $arrUpdData = array(
283                    $name                                       // ̾¾Î
284                    ,$url                                       // URL
285                    ,$php_dir                                   // PHP¥Ç¥£¥ì¥¯¥È¥ê
286                    ,$tpl_dir                                   // TPL¥Ç¥£¥ì¥¯¥È¥ê
287                    ,$filename                                  // ¥Õ¥¡¥¤¥ë̾
288                    ,sfChangeCheckBox($arrData['header_chk'])   // ¥Ø¥Ã¥À¡¼»ÈÍÑ
289                    ,sfChangeCheckBox($arrData['footer_chk'])   // ¥Õ¥Ã¥¿¡¼»ÈÍÑ
290                    ,$_SERVER['HTTP_REFERER']                   // ¹¹¿·URL
291                    );
292                   
293    return $arrUpdData;
294}
295
296/**************************************************************************************************************
297 * ´Ø¿ô̾   ¡§lfErrorCheck
298 * ½èÍýÆâÍÆ ¡§ÆþÎϹàÌܤΥ¨¥é¡¼¥Á¥§¥Ã¥¯¤ò¹Ô¤¦
299 * °ú¿ô1    ¡§$arrData  Ž¥Ž¥Ž¥ ÆþÎϥǡ¼¥¿
300 * Ìá¤êÃÍ   ¡§¥¨¥é¡¼¾ðÊó
301 **************************************************************************************************************/
302function lfErrorCheck($array) {
303    global $objPage;
304   
305    $objErr = new SC_CheckError($array);
306    $objErr->doFunc(array("̾¾Î", "page_name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
307    $objErr->doFunc(array("URL", "url", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
308
309    // URL¥Á¥§¥Ã¥¯
310    if (substr(strrev(trim($array['url'])),0,1) == "/") {
311        $objErr->arrErr['url'] = "¢¨ URL¤òÀµ¤·¤¯ÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£<br />";
312    }
313   
314    $check_url = USER_URL . $array['url'] . ".php";
315    if( strlen($array['url']) > 0 && !ereg( "^https?://+($|[a-zA-Z0-9_~=&\?\.\/-])+$", $check_url ) ) {
316        $objErr->arrErr['url'] = "¢¨ URL¤òÀµ¤·¤¯ÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£<br />";
317    }
318
319    // Ʊ°ì¤ÎURL¤¬Â¸ºß¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¥¨¥é¡¼
320    if(!isset($objErr->arrErr['url']) and $array['url'] !== ''){
321        $arrChk = lfgetPageData(" url = ? " , array(USER_URL . $array['url'].".php"));
322
323        if (count($arrChk[0]) >= 1 and $arrChk[0]['page_id'] != $array['page_id']) {
324            $objErr->arrErr['url'] = '¢¨ Ʊ¤¸URL¤Î¥Ç¡¼¥¿¤¬Â¸ºß¤·¤Æ¤¤¤Þ¤¹¡£Ê̤ÎURL¤òÉÕ¤±¤Æ¤¯¤À¤µ¤¤¡£';
325        }
326    }
327   
328    return $objErr->arrErr;
329}
330
331/**************************************************************************************************************
332 * ´Ø¿ô̾   ¡§lfCreateFile
333 * ½èÍýÆâÍÆ ¡§¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë
334 * °ú¿ô1    ¡§$pathŽ¥Ž¥Ž¥¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹
335 * Ìá¤êÃÍ   ¡§¤Ê¤·
336 **************************************************************************************************************/
337function lfCreateFile($path){
338   
339    // ¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë     
340    if (!is_dir(dirname($path))) {
341        mkdir(dirname($path));
342    }
343
344    // ¥Õ¥¡¥¤¥ëºîÀ®
345    $fp = fopen($path,"w");
346    fwrite($fp, $_POST['tpl_data']);
347    fclose($fp);
348}
349
350/**************************************************************************************************************
351 * ´Ø¿ô̾   ¡§lfCreatePHPFile
352 * ½èÍýÆâÍÆ ¡§PHP¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë
353 * °ú¿ô1    ¡§$pathŽ¥Ž¥Ž¥PHP¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹
354 * Ìá¤êÃÍ   ¡§¤Ê¤·
355 **************************************************************************************************************/
356function lfCreatePHPFile($path){
357
358    // phpÊݸÀè¥Ç¥£¥ì¥¯¥È¥ê¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë
359    if (!is_dir(dirname($path))) {
360        mkdir(dirname($path));
361    }
362   
363    // ¥Ù¡¼¥¹¤È¤Ê¤ëPHP¥Õ¥¡¥¤¥ë¤ÎÆɤ߹þ¤ß
364    if (file_exists(USER_DEF_PHP)){
365        $php_data = file_get_contents(USER_DEF_PHP);       
366    }
367   
368    // require.php¤Î¾ì½ê¤ò½ñ¤­´¹¤¨¤ë
369    $php_data = str_replace("###require###", HTML_PATH . "require.php", $php_data);
370   
371    // php¥Õ¥¡¥¤¥ë¤ÎºîÀ®
372    $fp = fopen($path,"w");
373    fwrite($fp, $php_data);
374    fclose($fp);
375}
Note: See TracBrowser for help on using the repository browser.