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

Revision 12157, 12.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/index.tpl';
16        $this->tpl_subnavi = 'design/subnavi.tpl';
17        $this->tpl_subno = "layout";       
18        $this->tpl_mainno = "design";
19        $this->tpl_subtitle = '¥ì¥¤¥¢¥¦¥ÈÊÔ½¸';
20    }
21}
22
23$objPage = new LC_Page();
24$objView = new SC_AdminView();
25$objSess = new SC_Session();
26
27// ¥Ú¡¼¥¸ID¤ò¼èÆÀ
28if (isset($_GET['page_id'])) {
29    $page_id = $_GET['page_id'];
30}else if ($_POST['page_id']){
31    $page_id = $_POST['page_id'];
32}else{
33    $page_id = 1;
34}
35
36// ÊÔ½¸²Äǽ¥Ú¡¼¥¸¤ò¼èÆÀ
37$objPage->arrEditPage = lfgetPageData();
38
39// ¥Ö¥í¥Ã¥¯ÇÛÃÖÍѥǡ¼¥¿¤ò¼èÆÀ
40$sel   = ", pos.target_id, pos.bloc_id, pos.bloc_row ";
41$from  = ", dtb_blocposition AS pos";
42$where = " where ";
43$where .= " lay.page_id = ? AND ";
44$where .= "lay.page_id = pos.page_id AND exists (select bloc_id from dtb_bloc as blc where pos.bloc_id = blc.bloc_id) ORDER BY lay.page_id,pos.target_id, pos.bloc_row, pos.bloc_id ";
45$arrData = array($page_id);
46$arrBlocPos = lfgetLayoutData($sel, $from, $where, $arrData );
47
48// ¥Ç¡¼¥¿¤Î¸ºß¥Á¥§¥Ã¥¯¤ò¹Ô¤¦
49$arrPageData = lfgetPageData("page_id = ?", array($page_id));
50if (count($arrPageData) <= 0) {
51    $exists_page = 0;
52}else{
53    $exists_page = 1;
54}
55$objPage->exists_page = $exists_page;
56
57// ¥á¥Ã¥»¡¼¥¸É½¼¨
58if ($_GET['msg'] == "on") {
59    $objPage->complate_msg="alert('ÅÐÏ¿¤¬´°Î»¤·¤Þ¤·¤¿¡£');";
60}
61
62// ¥Ö¥í¥Ã¥¯¤ò¼èÆÀ
63$arrBloc = lfgetBlocData();
64
65// ¿·µ¬¥Ö¥í¥Ã¥¯ºîÀ®
66if ($_POST['mode'] == 'new_bloc') {
67    header("location: ./bloc.php");
68}
69
70// ¿·µ¬¥Ú¡¼¥¸ºîÀ®
71if ($_POST['mode'] == 'new_page') {
72    header("location: ./main_edit.php");
73}
74
75// ¥Ç¡¼¥¿ÅÐÏ¿½èÍý
76if ($_POST['mode'] == 'confirm' or $_POST['mode'] == 'preview') {
77   
78    $arrPageData = array();
79    if ($_POST['mode'] == 'preview') {
80        $arrPageData = lfgetPageData(" page_id = ? " , array($page_id));
81        $page_id = "0";
82        $_POST['page_id'] = "0";
83    }
84   
85    // ¹¹¿·ÍѤ˥ǡ¼¥¿¤òÀ°¤¨¤ë
86    $arrUpdBlocData = array();
87    $arrTargetFlip = array_flip($arrTarget);
88   
89    $upd_cnt = 1;
90    $arrUpdData[$upd_cnt]['page_id'] = $_POST['page_id'];
91   
92    // POST¤Î¥Ç¡¼¥¿¤ò»È¤¤¤ä¤¹¤¤¤è¤¦¤Ë½¤Àµ
93    for($upd_cnt = 1; $upd_cnt <= $_POST['bloc_cnt']; $upd_cnt++){
94        if (!isset($_POST['id_'.$upd_cnt])) {
95            break;
96        }
97        $arrUpdBlocData[$upd_cnt]['name']       = $_POST['name_'.$upd_cnt];                         // ¥Ö¥í¥Ã¥¯Ì¾¾Î
98        $arrUpdBlocData[$upd_cnt]['id']         = $_POST['id_'.$upd_cnt];                           // ¥Ö¥í¥Ã¥¯ID
99        $arrUpdBlocData[$upd_cnt]['target_id']  = $arrTargetFlip[$_POST['target_id_'.$upd_cnt]];    // ¥¿¡¼¥²¥Ã¥ÈID
100        $arrUpdBlocData[$upd_cnt]['top']        = $_POST['top_'.$upd_cnt];                          // TOPºÂɸ
101        $arrUpdBlocData[$upd_cnt]['update_url'] = $_SERVER['HTTP_REFERER'];                         // ¹¹¿·URL
102    }
103
104    // ¥Ç¡¼¥¿¤Î¹¹¿·¤ò¹Ô¤¦
105    $objDBConn = new SC_DbConn;     // DBÁàºî¥ª¥Ö¥¸¥§¥¯¥È
106    $arrRet = array();              // ¥Ç¡¼¥¿¼èÆÀÍÑ
107   
108    // delete¼Â¹Ô
109    $del_sql = "";
110    $del_sql .= "DELETE FROM dtb_blocposition WHERE page_id = ? ";
111    $arrRet = $objDBConn->query($del_sql,array($page_id));
112   
113    // ¥Ö¥í¥Ã¥¯¤Î½ç½ø¤ò¼èÆÀ¤·¡¢¹¹¿·¤ò¹Ô¤¦
114    foreach($arrUpdBlocData as $key => $val){
115        // ¥Ö¥í¥Ã¥¯¤Î½ç½ø¤ò¼èÆÀ
116        $bloc_row = lfGetRowID($arrUpdBlocData, $val);
117        $arrUpdBlocData[$key]['bloc_row'] = $bloc_row;
118        $arrUpdBlocData[$key]['page_id']    = $_POST['page_id'];    // ¥Ú¡¼¥¸ID
119       
120        if ($arrUpdBlocData[$key]['target_id'] == 5) {
121            $arrUpdBlocData[$key]['bloc_row'] = "0";
122        }
123       
124        // insertʸÀ¸À®
125        $ins_sql = "";
126        $ins_sql .= "INSERT INTO dtb_blocposition ";
127        $ins_sql .= " values ( ";
128        $ins_sql .= "   ?  ";           // ¥Ú¡¼¥¸ID
129        $ins_sql .= "   ,? ";           // ¥¿¡¼¥²¥Ã¥ÈID
130        $ins_sql .= "   ,? ";           // ¥Ö¥í¥Ã¥¯ID
131        $ins_sql .= "   ,? ";           // ¥Ö¥í¥Ã¥¯¤Îʤӽç½ø
132        $ins_sql .= "   ,(SELECT filename FROM dtb_bloc WHERE bloc_id = ?) ";           // ¥Õ¥¡¥¤¥ë̾¾Î
133        $ins_sql .= "   )  ";
134
135        // insert¥Ç¡¼¥¿À¸À®
136        $arrInsData = array($page_id,
137                             $arrUpdBlocData[$key]['target_id'],
138                             $arrUpdBlocData[$key]['id'],
139                             $arrUpdBlocData[$key]['bloc_row'],
140                             $arrUpdBlocData[$key]['id']
141                            );
142        // SQL¼Â¹Ô
143        $arrRet = $objDBConn->query($ins_sql,$arrInsData);
144    }
145
146    // ¥×¥ì¥Ó¥å¡¼½èÍý
147    if ($_POST['mode'] == 'preview') {
148        if ($page_id === "") {
149            header("location: ./index.php");
150        }
151        lfSetPreData($arrPageData);
152       
153        $_SESSION['preview'] = "ON";
154        header("Location: ". URL_DIR . "preview/index.php");
155    }else{
156        header("Location: ./index.php?page_id=$page_id&msg=on");
157    }
158}
159
160// ¥Ç¡¼¥¿ºï½ü½èÍý ¥Ù¡¼¥¹¥Ç¡¼¥¿¤Ç¤Ê¤±¤ì¤Ð¥Õ¥¡¥¤¥ë¤òºï½ü
161if ($_POST['mode'] == 'delete' and  !lfCheckBaseData($page_id)) {
162    lfDelPageData($page_id);
163}
164
165// ¥Ö¥í¥Ã¥¯¾ðÊó¤ò²èÌÌÇÛÃÖÍѤËÊÔ½¸
166$tpl_arrBloc = array();
167$cnt = 0;
168// »ÈÍѤµ¤ì¤Æ¤¤¤ë¥Ö¥í¥Ã¥¯¥Ç¡¼¥¿¤òÀ¸À®
169foreach($arrBlocPos as $key => $val){
170    if ($val['page_id'] == $page_id) {
171        $tpl_arrBloc = lfSetBlocData($arrBloc, $val, $tpl_arrBloc, $cnt);
172        $cnt++;
173    }
174}
175
176// ̤»ÈÍѤΥ֥í¥Ã¥¯¥Ç¡¼¥¿¤òÄɲÃ
177foreach($arrBloc as $key => $val){
178    if (!lfChkBloc($val, $tpl_arrBloc)) {
179        $val['target_id'] = 5;  // ̤»ÈÍѤËÄɲ乤ë
180        $tpl_arrBloc = lfSetBlocData($arrBloc, $val, $tpl_arrBloc, $cnt);
181        $cnt++;
182    }
183}
184
185$objPage->tpl_arrBloc = $tpl_arrBloc;
186$objPage->bloc_cnt = count($tpl_arrBloc);
187$objPage->page_id = $page_id;
188
189// ¥Ú¡¼¥¸Ì¾¾Î¤ò¼èÆÀ
190$arrPageData = lfgetPageData(' page_id = ?', array($page_id));
191$objPage->arrPageData = $arrPageData[0];
192
193// ǧ¾Ú²ÄÈݤÎȽÄê
194$objSess = new SC_Session();
195sfIsSuccess($objSess);
196
197global $GLOBAL_ERR;
198$errCnt = 0;
199if ($GLOBAL_ERR != "") {
200    $arrGlobalErr = explode("\n",$GLOBAL_ERR);
201    $errCnt = count($arrGlobalErr) - 8;
202    if ($errCnt < 0 ) {
203        $errCnt = 0;
204    }
205}
206$objPage->errCnt = $errCnt;
207
208// ²èÌ̤Îɽ¼¨
209$objView->assignobj($objPage);
210$objView->display(MAIN_FRAME);
211
212//---------------------------------------------------------------------------------------------------------------------------------------------------------
213
214/**************************************************************************************************************
215 * ´Ø¿ô̾   ¡§lfgetLayoutData
216 * ½èÍýÆâÍÆ ¡§ÊÔ½¸²Äǽ¤Ê¥Ú¡¼¥¸¾ðÊó¤ò¼èÆÀ¤¹¤ë
217 * °ú¿ô1    ¡§$sel    Ž¥Ž¥Ž¥ Select¶çʸ
218 * °ú¿ô2    ¡§$where  Ž¥Ž¥Ž¥ Where¶çʸ
219 * °ú¿ô3    ¡§$arrVal Ž¥Ž¥Ž¥ Where¶ç¤Î¹Ê¹þ¾ò·ïÃÍ
220 * Ìá¤êÃÍ   ¡§¥Ú¡¼¥¸¥ì¥¤¥¢¥¦¥È¾ðÊó
221 **************************************************************************************************************/
222function lfgetLayoutData($sel = '' , $from = '', $where = '', $arrVal = ''){
223    $objDBConn = new SC_DbConn;     // DBÁàºî¥ª¥Ö¥¸¥§¥¯¥È
224    $sql = "";                      // ¥Ç¡¼¥¿¼èÆÀSQLÀ¸À®ÍÑ
225    $arrRet = array();              // ¥Ç¡¼¥¿¼èÆÀÍÑ
226   
227    // SQLÀ¸À®
228
229    $sql = "";
230    $sql .= " select ";
231    $sql .= "     lay.page_id ";
232    $sql .= "     ,lay.page_name ";
233    $sql .= "     ,lay.url ";
234    $sql .= "     ,lay.author ";
235    $sql .= "     ,lay.description ";
236    $sql .= "     ,lay.keyword ";
237    $sql .= "     ,lay.update_url ";
238    $sql .= "     ,lay.create_date ";
239    $sql .= "     ,lay.update_date ";
240   
241    // Select¶ç¤Î»ØÄ꤬¤¢¤ì¤ÐÄɲà  
242    if ($sel != '') {
243        $sql .= $sel;
244    }
245   
246    $sql .= " from dtb_pagelayout AS lay ";
247    // From¶ç¤Î»ØÄ꤬¤¢¤ì¤ÐÄɲÃ
248    if ($from != '') {
249        $sql .= $from;
250    }
251
252    // where¶ç¤Î»ØÄ꤬¤¢¤ì¤ÐÄɲà  
253    if ($where != '') {
254        $sql .= $where;
255    }else{
256        $sql .= " ORDER BY lay.page_id ";
257    }
258   
259    $arrRet = $objDBConn->getAll($sql, $arrVal);
260   
261    return $arrRet;
262}
263
264/**************************************************************************************************************
265 * ´Ø¿ô̾   ¡§lfgetBlocData
266 * ½èÍýÆâÍÆ ¡§¥Ö¥í¥Ã¥¯¾ðÊó¤ò¼èÆÀ¤¹¤ë
267 * °ú¿ô1    ¡§$where  Ž¥Ž¥Ž¥ Where¶çʸ
268 * °ú¿ô2    ¡§$arrVal Ž¥Ž¥Ž¥ Where¶ç¤Î¹Ê¹þ¾ò·ïÃÍ
269 * Ìá¤êÃÍ   ¡§¥Ö¥í¥Ã¥¯¾ðÊó
270 **************************************************************************************************************/
271function lfgetBlocData($where = '', $arrVal = ''){
272    $objDBConn = new SC_DbConn;     // DBÁàºî¥ª¥Ö¥¸¥§¥¯¥È
273    $sql = "";                      // ¥Ç¡¼¥¿¼èÆÀSQLÀ¸À®ÍÑ
274    $arrRet = array();              // ¥Ç¡¼¥¿¼èÆÀÍÑ
275   
276    // SQLÀ¸À®
277    $sql = "";
278    $sql .= " SELECT ";
279    $sql .= "   bloc_id";
280    $sql .= "   ,bloc_name";
281    $sql .= "   ,tpl_path";
282    $sql .= "   ,filename";
283    $sql .= "   ,update_date";
284    $sql .= " FROM ";
285    $sql .= "   dtb_bloc";
286
287    // where¶ç¤Î»ØÄ꤬¤¢¤ì¤ÐÄɲà  
288    if ($where != '') {
289        $sql .= " WHERE " . $where;
290    }
291   
292    $sql .= " ORDER BY  bloc_id";
293   
294    $arrRet = $objDBConn->getAll($sql, $arrVal);
295   
296    return $arrRet;
297}
298
299/**************************************************************************************************************
300 * ´Ø¿ô̾   ¡§lfSetBlocData
301 * ½èÍýÆâÍÆ ¡§¥Ö¥í¥Ã¥¯¾ðÊó¤ÎÇÛÎó¤òÀ¸À®¤¹¤ë
302 * °ú¿ô1    ¡§$arrBloc      Ž¥Ž¥Ž¥ Bloc¾ðÊó
303 * °ú¿ô2    ¡§$tpl_arrBloc  Ž¥Ž¥Ž¥ ¥Ç¡¼¥¿¤ò¥»¥Ã¥È¤¹¤ëÇÛÎó
304 * °ú¿ô3    ¡§$cnt          Ž¥Ž¥Ž¥ ÇÛÎóÈÖ¹æ
305 * Ìá¤êÃÍ   ¡§¥Ç¡¼¥¿¤ò¥»¥Ã¥È¤·¤¿ÇÛÎó
306 **************************************************************************************************************/
307function lfSetBlocData($arrBloc, $val, $tpl_arrBloc, $cnt) {
308    global $arrTarget;
309   
310    $tpl_arrBloc[$cnt]['target_id'] = $arrTarget[$val['target_id']];
311    $tpl_arrBloc[$cnt]['bloc_id'] = $val['bloc_id'];
312    $tpl_arrBloc[$cnt]['bloc_row'] = $val['bloc_row'];
313
314    foreach($arrBloc as $bloc_key => $bloc_val){
315        if ($bloc_val['bloc_id'] == $val['bloc_id']) {
316            $bloc_name = $bloc_val['bloc_name'];
317            break;
318        }
319    }
320    $tpl_arrBloc[$cnt]['name'] = $bloc_name;
321   
322    return $tpl_arrBloc;
323}
324
325/**************************************************************************************************************
326 * ´Ø¿ô̾   ¡§lfChkBloc
327 * ½èÍýÆâÍÆ ¡§¥Ö¥í¥Ã¥¯ID¤¬ÇÛÎó¤ËÄɲ䵤ì¤Æ¤¤¤ë¤«¤Î¥Á¥§¥Ã¥¯¤ò¹Ô¤¦
328 * °ú¿ô1    ¡§$arrBloc    Ž¥Ž¥Ž¥ Bloc¾ðÊó
329 * °ú¿ô2    ¡§$arrChkData Ž¥Ž¥Ž¥ ¥Á¥§¥Ã¥¯¤ò¹Ô¤¦¥Ç¡¼¥¿ÇÛÎó
330 * Ìá¤êÃÍ   ¡§True  Ž¥Ž¥Ž¥ ¸ºß¤¹¤ë
331 *          ¡¡False Ž¥Ž¥Ž¥ ¸ºß¤·¤Ê¤¤
332 **************************************************************************************************************/
333function lfChkBloc($arrBloc, $arrChkData) {
334    foreach($arrChkData as $key => $val){
335        if ($val['bloc_id'] === $arrBloc['bloc_id'] ) {
336            // ÇÛÎó¤Ë¸ºß¤¹¤ì¤ÐTrue¤òÊÖ¤¹
337            return true;
338        }
339    }
340   
341    // ÇÛÎó¤Ë¸ºß¤·¤Ê¤±¤ì¤ÐFlase¤òÊÖ¤¹
342    return false;
343}
344
345/**************************************************************************************************************
346 * ´Ø¿ô̾   ¡§lfGetRowID
347 * ½èÍýÆâÍÆ ¡§¥Ö¥í¥Ã¥¯ID¤¬²¿ÈÖÌܤËÇÛÃÖ¤µ¤ì¤Æ¤¤¤ë¤«¤òÄ´¤Ù¤ë
348 * °ú¿ô1    ¡§$arrUpdData   Ž¥Ž¥Ž¥ ¹¹¿·¾ðÊó
349 * °ú¿ô2    ¡§$arrObj       Ž¥Ž¥Ž¥ ¥Á¥§¥Ã¥¯¤ò¹Ô¤¦¥Ç¡¼¥¿ÇÛÎó
350 * Ìá¤êÃÍ   ¡§½çÈÖ
351 **************************************************************************************************************/
352function lfGetRowID($arrUpdData, $arrObj){
353    $no = 0; // ¥«¥¦¥ó¥ÈÍÑ¡ÊƱ¤¸¥Ç¡¼¥¿¤¬É¬¤º1·ï¤¢¤ë¤Î¤Ç¡¢½é´üÃͤÏ0¡Ë
354   
355    // Âоݥǡ¼¥¿¤¬²¿ÈÖÌܤËÇÛÃÖ¤µ¤ì¤Æ¤¤¤ë¤Î¤«¤ò¼èÆÀ¤¹¤ë¡£
356    foreach ($arrUpdData as $key => $val) {
357        if ($val['target_id'] === $arrObj['target_id'] and $val['top'] <= $arrObj['top']){
358            $no++;
359        }
360    }
361    // ÈÖ¹æ¤òÊÖ¤¹
362    return $no;
363}
364
365/**************************************************************************************************************
366 * ´Ø¿ô̾   ¡§lfGetRowID
367 * ½èÍýÆâÍÆ ¡§¥Ö¥í¥Ã¥¯ID¤¬²¿ÈÖÌܤËÇÛÃÖ¤µ¤ì¤Æ¤¤¤ë¤«¤òÄ´¤Ù¤ë
368 * °ú¿ô1    ¡§$arrUpdData   Ž¥Ž¥Ž¥ ¹¹¿·¾ðÊó
369 * °ú¿ô2    ¡§$arrObj       Ž¥Ž¥Ž¥ ¥Á¥§¥Ã¥¯¤ò¹Ô¤¦¥Ç¡¼¥¿ÇÛÎó
370 * Ìá¤êÃÍ   ¡§½çÈÖ
371 **************************************************************************************************************/
372function lfSetPreData($arrPageData){
373    $objDBConn = new SC_DbConn;     // DBÁàºî¥ª¥Ö¥¸¥§¥¯¥È
374    $sql = "";                      // ¥Ç¡¼¥¿¹¹¿·SQLÀ¸À®ÍÑ
375    $ret = "";                      // ¥Ç¡¼¥¿¹¹¿··ë²Ì³ÊǼÍÑ
376    $arrUpdData = array();          // ¹¹¿·¥Ç¡¼¥¿À¸À®ÍÑ
377    $filename = uniqid("");
378
379    $arrPreData = lfgetPageData(" page_id = ? " , array("0"));
380
381    // tpl¥Õ¥¡¥¤¥ë¤Îºï½ü
382    $del_tpl = USER_PATH . "templates/" . $arrPreData[0]['filename'] . '.tpl';
383    if (file_exists($del_tpl)){
384        unlink($del_tpl);   
385    }
386   
387    // ¥×¥ì¥Ó¥å¡¼ÍÑtpl¥Õ¥¡¥¤¥ë¤Î¥³¥Ô¡¼
388    $tplfile = $arrPageData[0]['tpl_dir'] . $arrPageData[0]['filename'];
389   
390    if($tplfile == ""){
391        // tpl¥Õ¥¡¥¤¥ë¤¬¶õ¤Î¾ì¹ç¤Ë¤ÏMY¥Ú¡¼¥¸¤ÈȽÃÇ
392        $tplfile = "user_data/templates/mypage/index";
393    }
394    copy(HTML_PATH . $tplfile . ".tpl", USER_PATH . "templates/" . $filename . ".tpl");
395   
396    // ¹¹¿·¥Ç¡¼¥¿¤Î¼èÆÀ
397    $sql = "select page_name, header_chk, footer_chk from dtb_pagelayout where page_id = ?";
398    $ret = $objDBConn->getAll($sql, array($arrPageData[0]['page_id']));
399
400    // db¥Ç¡¼¥¿¤Î¥³¥Ô¡¼
401    $sql = " update dtb_pagelayout set ";
402    $sql .= "     page_name = ?";
403    $sql .= "     ,header_chk = ?";
404    $sql .= "     ,footer_chk = ?";
405    $sql .= "     ,url = ?";
406    $sql .= "     ,tpl_dir = ?";
407    $sql .= "     ,filename = ?";
408    $sql .= " where page_id = 0";
409   
410    $arrUpdData = array($ret[0]['page_id']
411                        ,$ret[0]['page_id']
412                        ,$ret[0]['page_id']
413                        ,USER_DIR."templates/"
414                        ,USER_DIR."templates/"
415                        ,$filename
416                        );
417   
418    $objDBConn->query($sql,$arrUpdData);
419}
Note: See TracBrowser for help on using the repository browser.