source: branches/feature-module-update/html/admin/design/bloc.php @ 15532

Revision 15532, 8.5 KB checked in by nanasess, 17 years ago (diff)

svn:mime-type 修正

  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
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");
8
9class LC_Page {
10    var $arrForm;
11    var $arrHidden;
12
13    function LC_Page() {
14        $this->tpl_mainpage = 'design/bloc.tpl';
15        $this->tpl_subnavi = 'design/subnavi.tpl';
16        $this->tpl_subno_edit = 'bloc';
17        $this->text_row = 13;
18        $this->tpl_subno = "bloc"; 
19        $this->tpl_mainno = "design";
20        $this->tpl_subtitle = 'ブロック編集';
21    }
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->arrBlocList = lfgetBlocData();
33
34// ブロックIDを取得
35if (isset($_POST['bloc_id'])) {
36    $bloc_id = $_POST['bloc_id'];
37}else if ($_GET['bloc_id']){
38    $bloc_id = $_GET['bloc_id'];
39}else{
40    $bloc_id = '';
41}
42$objPage->bloc_id = $bloc_id;
43
44// bloc_id が指定されている場合にはブロックデータの取得
45if ($bloc_id != '') {
46    $arrBlocData = lfgetBlocData(" bloc_id = ? " , array($bloc_id));
47    $arrBlocData[0]['tpl_path'] = USER_PATH . $arrBlocData[0]['tpl_path'];
48
49    // テンプレートファイルの読み込み
50    $arrBlocData[0]['tpl_data'] = file_get_contents($arrBlocData[0]['tpl_path']);
51    $objPage->arrBlocData = $arrBlocData[0];
52}
53
54// メッセージ表示
55if ($_GET['msg'] == "on") {
56    // 完了メッセージ
57    $objPage->tpl_onload="alert('登録が完了しました。');";
58}
59
60// プレビュー表示
61if ($_POST['mode'] == "preview") {
62    // プレビューファイル作成
63    $prev_path = USER_INC_PATH . 'preview/bloc_preview.tpl';
64    $fp = fopen($prev_path,"w");
65    fwrite($fp, $_POST['bloc_html']);
66    fclose($fp);
67   
68    // プレビューデータ表示
69    $objPage->preview = "on";
70    $objPage->arrBlocData['tpl_data'] = $_POST['bloc_html'];
71    $objPage->arrBlocData['tpl_path'] = $prev_path;
72    $objPage->arrBlocData['bloc_name'] = $_POST['bloc_name'];
73    $objPage->arrBlocData['filename'] = $_POST['filename'];
74    $objPage->text_row = $_POST['html_area_row'];
75}else{
76    $objPage->preview = "off";
77}
78
79// データ登録処理
80if ($_POST['mode'] == 'confirm') {
81   
82    // エラーチェック
83    $objPage->arrErr = lfErrorCheck($_POST);
84
85    // エラーがなければ更新処理を行う 
86    if (count($objPage->arrErr) == 0) {
87        // DBへデータを更新する
88        lfEntryBlocData($_POST);
89       
90        // ファイルの削除
91        $del_file=BLOC_PATH . $arrBlocData[0]['filename']. '.tpl';
92        if (file_exists($del_file)) {
93            unlink($del_file);
94        }
95       
96        // ファイル作成
97        $fp = fopen(BLOC_PATH . $_POST['filename'] . '.tpl',"w");
98        fwrite($fp, $_POST['bloc_html']);
99        fclose($fp);
100       
101        $arrBlocData = lfgetBlocData(" filename = ? " , array($_POST['filename']));
102           
103        $bloc_id = $arrBlocData[0]['bloc_id']; 
104        header("location: ./bloc.php?bloc_id=$bloc_id&msg=on");
105    }else{
106        // エラーがあれば入力時のデータを表示する
107        $objPage->arrBlocData = $_POST;
108    }
109}
110
111// データ削除処理
112if ($_POST['mode'] == 'delete') {
113   
114    // DBへデータを更新する
115    $objDBConn = new SC_DbConn;     // DB操作オブジェクト
116    $sql = "";                      // データ更新SQL生成用
117    $ret = "";                      // データ更新結果格納用
118    $arrDelData = array();          // 更新データ生成用
119   
120    // 更新データ生成
121    $arrUpdData = array($arrData['bloc_name'], BLOC_DIR . $arrData['filename'] . '.tpl', $arrData['filename']);
122   
123    // bloc_id が空でない場合にはdeleteを実行
124    if ($_POST['bloc_id'] !== '') {
125        // SQL生成
126        $sql = " DELETE FROM dtb_bloc WHERE bloc_id = ?";
127        // SQL実行
128        $ret = $objDBConn->query($sql,array($_POST['bloc_id']));
129       
130        // ページに配置されているデータも削除する
131        $sql = "DELETE FROM dtb_blocposition WHERE bloc_id = ?";
132        // SQL実行
133        $ret = $objDBConn->query($sql,array($_POST['bloc_id']));
134   
135        // ファイルの削除
136        $del_file = BLOC_PATH . $arrBlocData[0]['filename']. '.tpl';
137        if(file_exists($del_file)){
138            unlink($del_file);
139        }
140    }
141
142    header("location: ./bloc.php");
143}
144
145
146// 画面の表示
147$objView->assignobj($objPage);
148$objView->display(MAIN_FRAME);
149
150//---------------------------------------------------------------------------------------------------------------------------------------------------------
151
152/**************************************************************************************************************
153 * 関数名  :lfgetBlocData
154 * 処理内容 :ブロック情報を取得する
155 * 引数1  :$where  ・・・ Where句文
156 * 引数2  :$arrVal ・・・ Where句の絞込条件値
157 * 戻り値  :ブロック情報
158 **************************************************************************************************************/
159function lfgetBlocData($where = '', $arrVal = ''){
160    $objDBConn = new SC_DbConn;     // DB操作オブジェクト
161    $sql = "";                      // データ取得SQL生成用
162    $arrRet = array();              // データ取得用
163   
164    // SQL生成
165    $sql = " SELECT ";
166    $sql .= "   bloc_id";
167    $sql .= "   ,bloc_name";
168    $sql .= "   ,tpl_path";
169    $sql .= "   ,filename";
170    $sql .= "   ,create_date";
171    $sql .= "   ,update_date";
172    $sql .= "   ,php_path";
173    $sql .= "   ,del_flg";
174    $sql .= " FROM ";
175    $sql .= "   dtb_bloc";
176
177    // where句の指定があれば追加 
178    if ($where != '') {
179        $sql .= " WHERE " . $where;
180    }
181   
182    $sql .= " ORDER BY  bloc_id";
183   
184    $arrRet = $objDBConn->getAll($sql, $arrVal);
185   
186    return $arrRet;
187}
188
189/**************************************************************************************************************
190 * 関数名  :lfEntryBlocData
191 * 処理内容 :ブロック情報を更新する
192 * 引数1  :$arrData  ・・・ 更新データ
193 * 戻り値  :更新結果
194 **************************************************************************************************************/
195function lfEntryBlocData($arrData){
196    $objDBConn = new SC_DbConn;     // DB操作オブジェクト
197    $sql = "";                      // データ更新SQL生成用
198    $ret = "";                      // データ更新結果格納用
199    $arrUpdData = array();          // 更新データ生成用
200    $arrChk = array();              // 排他チェック用
201   
202    // 更新データ生成
203    $arrUpdData = array($arrData['bloc_name'], BLOC_DIR . $arrData['filename'] . '.tpl', $arrData['filename']);
204   
205    // データが存在しているかチェックを行う
206    if($arrData['bloc_id'] !== ''){
207        $arrChk = lfgetBlocData("bloc_id = ?", array($arrData['bloc_id']));
208    }
209   
210    // bloc_id が空 若しくは データが存在していない場合にはINSERTを行う
211    if ($arrData['bloc_id'] === '' or !isset($arrChk[0])) {
212        // SQL生成
213        $sql = " INSERT INTO dtb_bloc";
214        $sql .= " ( ";
215        $sql .= "     bloc_name ";      // ブロック名称
216        $sql .= "     ,tpl_path ";      // テンプレート保存先
217        $sql .= "     ,filename ";      // ファイル名称
218        $sql .= "     ,create_date ";   // 作成日
219        $sql .= "     ,update_date ";   // 更新日
220        $sql .= " ) VALUES ( ?,?,?,now(),now() )";
221        $sql .= " ";
222    }else{
223        // データが存在してる場合にはアップデートを行う
224        // SQL生成
225        $sql = " UPDATE dtb_bloc";
226        $sql .= " SET";
227        $sql .= "     bloc_name = ? ";  // ブロック名称
228        $sql .= "     ,tpl_path = ? ";  // テンプレート保存先
229        $sql .= "     ,filename = ? ";  // テンプレートファイル名
230        $sql .= "     ,update_date = now()";
231        $sql .= " WHERE bloc_id = ?";
232        $sql .= " ";
233       
234        // 更新データにブロックIDを追加
235        array_push($arrUpdData, $arrData['bloc_id']);
236    }
237   
238    // SQL実行
239    $ret = $objDBConn->query($sql,$arrUpdData);
240   
241    return $ret;
242
243}
244
245/**************************************************************************************************************
246 * 関数名  :lfErrorCheck
247 * 処理内容 :入力項目のエラーチェックを行う
248 * 引数1  :$arrData  ・・・ 入力データ
249 * 戻り値  :エラー情報
250 **************************************************************************************************************/
251function lfErrorCheck($array) {
252    global $objPage;
253    $objErr = new SC_CheckError($array);
254   
255    $objErr->doFunc(array("ブロック名", "bloc_name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK"));
256    $objErr->doFunc(array("ファイル名", "filename", STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "MAX_LENGTH_CHECK","FILE_NAME_CHECK"));
257   
258    // 同一のファイル名が存在している場合にはエラー
259    if(!isset($objErr->arrErr['filename']) and $array['filename'] !== ''){
260        $arrChk = lfgetBlocData("filename = ?", array($array['filename']));
261       
262        if (count($arrChk[0]) >= 1 and $arrChk[0]['bloc_id'] != $array['bloc_id']) {
263            $objErr->arrErr['filename'] = '※ 同じファイル名のデータが存在しています。別の名称を付けてください。';
264        }
265    }
266   
267    return $objErr->arrErr;
268}
Note: See TracBrowser for help on using the repository browser.