source: branches/feature-module-update/data/include/page_layout.inc @ 15078

Revision 15078, 8.0 KB checked in by nanasess, 17 years ago (diff)

r15064 から svn cp
とりあえず暫定コミット.

  • UTF-8 に変更
  • slib.php, glib.php のクラス化
  • LC_Page の抽象化(一部)
RevLine 
[12157]1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7
8/**************************************************************************************************************
[15078]9 * 関数名  :sfGetPageLayout
10 * 処理内容 :ページのレイアウト情報をセットする
11 * 引数1  :$objPage
12 * 引数2  :$preview
13 * 戻り値  :ページのレイアウト情報
[12157]14 **************************************************************************************************************/
15function sfGetPageLayout($objPage, $preview = false, $url = ""){
16    $arrPageLayout = array();
17
[15078]18    // 現在のURLの取得
[12157]19    if ($preview === false) {
20        if ($url == "") {
[12496]21            $url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];           
[12157]22        }
[15078]23        // URLを元にページデザインを取得
[12157]24        $arrPageData = lfgetPageData(" url = ? " , array($url));
25    }else{
26        $arrPageData = lfgetPageData(" page_id = ? " , array("0"));
27    }
28
[15078]29    // メインテンプレートファイルを設定
[12157]30    if (!isset($objPage->tpl_mainpage)) {
31        $objPage->tpl_mainpage = HTML_PATH . $arrPageData[0]['tpl_dir'] . $arrPageData[0]['filename'] . ".tpl";
32    }
33   
[15078]34    // ページタイトルを設定
[12157]35    if (!isset($objPage->tpl_title)) {
36        $objPage->tpl_title = $arrPageData[0]['page_name'];
37    }
38
39    $arrPageLayout = $arrPageData[0];
40
[15078]41    // 全ナビデータを取得する
[12157]42    $arrNavi = lfGetNaviData($url, $preview);
43   
44    $arrPageLayout['LeftNavi']  = lfGetNavi($arrNavi,1);    // LEFT NAVI
[15078]45    $arrPageLayout['MainHead']  = lfGetNavi($arrNavi,2);    // メイン上部
[12157]46    $arrPageLayout['RightNavi'] = lfGetNavi($arrNavi,3);    // RIGHT NAVI
[15078]47    $arrPageLayout['MainFoot']  = lfGetNavi($arrNavi,4);    // メイン下部
[12157]48   
49    $objPage->arrPageLayout = $arrPageLayout;
50   
51    return $objPage;
52}
53
54/**************************************************************************************************************
[15078]55 * 関数名  :lfgetPageData
56 * 処理内容 :ページ情報を取得する
57 * 引数1  :$where  ・・・ Where句文
58 * 引数2  :$arrVal ・・・ Where句の絞込条件値
59 * 戻り値  :ページ情報
[12157]60 **************************************************************************************************************/
61function lfgetPageData($where = '', $arrVal = ''){
[15078]62    $objDBConn = new SC_DbConn;     // DB操作オブジェクト
63    $sql = "";                      // データ取得SQL生成用
64    $arrRet = array();              // データ取得用
[12157]65   
[15078]66    // SQL生成
[12157]67    $sql .= " SELECT";
[15078]68    $sql .= " page_id";             // ページID
69    $sql .= " ,page_name";          // 名称
[12157]70    $sql .= " ,url";                // URL
[15078]71    $sql .= " ,php_dir";            // php保存先ディレクトリ
72    $sql .= " ,tpl_dir";            // tpl保存先ディdレクトリ
73    $sql .= " ,filename";           // ファイル名称
74    $sql .= " ,header_chk ";        // ヘッダー使用FLG
75    $sql .= " ,footer_chk ";        // フッター使用FLG
76    $sql .= " ,edit_flg ";          // 編集可能FLG
77    $sql .= " ,author";             // authorタグ
78    $sql .= " ,description";        // descriptionタグ
79    $sql .= " ,keyword";            // keywordタグ
80    $sql .= " ,update_url";         // 更新URL
81    $sql .= " ,create_date";        // データ作成日
82    $sql .= " ,update_date";        // データ更新日
[12157]83    $sql .= " FROM ";
84    $sql .= "     dtb_pagelayout";
85    $sql .= " WHERE ";
86   
[15078]87    // where句の指定があれば追加
[12157]88    if ($where != '') {
89        $sql .= $where;
90    }else{
91        $sql .= "     page_id != 0 ";
92    }
93
94    $sql .= " ORDER BY  page_id";
95   
96    $arrRet = $objDBConn->getAll($sql, $arrVal);
97   
98    return $arrRet;
99}
100
101
102/**************************************************************************************************************
[15078]103 * 関数名  :lfGetNaviData
104 * 処理内容 :ナビ情報を取得する
105 * 戻り値  :ブロック情報
[12157]106 **************************************************************************************************************/
107function lfGetNaviData($url, $preview=false){
[15078]108    $objDBConn = new SC_DbConn;     // DB操作オブジェクト
109    $sql = "";                      // データ取得SQL生成用
110    $arrRet = array();              // データ取得用
[12157]111    $arrData = array();
112
[15078]113    // SQL文生成       
[12157]114    $sql = "";
115    $sql .= " SELECT ";
116    $sql .= "     target_id ";
117    $sql .= "     ,(SELECT bloc_name FROM dtb_bloc AS bloc WHERE bloc.bloc_id = pos.bloc_id) AS bloc_name";
118    $sql .= "     ,(SELECT tpl_path FROM dtb_bloc AS bloc WHERE bloc.bloc_id = pos.bloc_id) AS tpl_path";
119    $sql .= "     ,(SELECT php_path FROM dtb_bloc AS bloc WHERE bloc.bloc_id = pos.bloc_id) AS php_path";
120    $sql .= " FROM";
121    $sql .= "     dtb_blocposition AS pos";
122    $sql .= " WHERE";
123    if ($preview == true) {
124        $sql .= "     page_id = (SELECT page_id FROM dtb_pagelayout WHERE page_id = '0')";
125    }else{
126        $sql .= "     page_id = (SELECT page_id FROM dtb_pagelayout WHERE url = ?)";
127        $arrData = array($url);
128    }
129    $sql .= " ORDER BY target_id,bloc_row";
130    $sql .= " ";
131   
[15078]132    // SQL実行
[12157]133    $arrRet = $objDBConn->getAll($sql, $arrData);
134   
[15078]135    // 結果を返す
[12157]136    return $arrRet;
137}
138
139
140/**************************************************************************************************************
[15078]141 * 関数名  :lfGetNavi
142 * 処理内容 :各部分のナビ情報を取得する
143 * 戻り値  :ブロック情報
[12157]144 **************************************************************************************************************/
145function lfGetNavi($arrNavi, $target_id){
146    $arrRet = array();
147    if(is_array($arrNavi)) {
148        foreach($arrNavi as $key => $val){
[15078]149            // 指定された箇所と同じデータだけを取得する
[12157]150            if ($target_id == $val['target_id']){
151                if ($val['php_path'] != '') {
152                    $arrNavi[$key]['php_path'] = HTML_PATH . $val['php_path'];
153                    $arrNavi[$key]['include'] = "<!--{include file='".$val['php_path']."'}-->";
154                }else{
155                    $arrNavi[$key]['tpl_path'] = USER_PATH . $val['tpl_path'];
156                    $arrNavi[$key]['include'] = "<!--{include file='". USER_PATH . $val['tpl_path'] ."'}-->";
157                }
158               
159                $arrRet[] = $arrNavi[$key];
160            }
161        }
162    }
163    return $arrRet;
164}
165
166
167function lfDelPageData($page_id){
[15078]168    // DBへデータを更新する
169    $objDBConn = new SC_DbConn;     // DB操作オブジェクト
170    $sql = "";                      // データ更新SQL生成用
171    $ret = "";                      // データ更新結果格納用
172    $arrDelData = array();          // 更新データ生成用
[12157]173   
[15078]174    // page_id が空でない場合にはdeleteを実行
[12157]175    if ($page_id !== '') {
[15078]176        // SQL生成
[12157]177        $sql = " DELETE FROM dtb_pagelayout WHERE page_id = ?";
178
[15078]179        // SQL実行
[12157]180        $ret = $objDBConn->query($sql,array($page_id));
181
[15078]182        // ファイルの削除
[12157]183        lfDelFile($arrPageData[0]);
184    }
185
186    header("location: ".$_SERVER['REQUEST_URI']);
187
188}
189
190/**************************************************************************************************************
[15078]191 * 関数名  :lfDelFile 
192 * 処理内容 :ファイルを削除する
193 * 引数1  :$data  ・・・ 削除データ
194 * 戻り値  :なし
[12157]195 **************************************************************************************************************/
196function lfDelFile($arrData){
[15078]197    // ファイルディレクトリ取得
[12157]198    $del_php = HTML_PATH . $arrData['php_dir'] . $arrData['filename'] . ".php";
199    $del_tpl = HTML_PATH . $arrData['tpl_dir'] . $arrData['filename'] . ".tpl";
200
[15078]201    // phpファイルの削除
[12157]202    if (file_exists($del_php)){
203        unlink($del_php);   
204    }
205
[15078]206    // tplファイルの削除
[12157]207    if (file_exists($del_tpl)){
208        unlink($del_tpl);   
209    }
210}
211
212/**************************************************************************************************************
[15078]213 * 関数名  :lfCheckBaseData
214 * 処理内容 :データがベースデータなのかを判断する
215 * 引数1  :$data  ・・・ 判断データ(ページID)
216 * 戻り値  :true・・・ベースデータ、false・・・ベースデータでない
[12157]217 **************************************************************************************************************/
218function lfCheckBaseData($data){
219    $ret = false;
220   
221    if ($data == 0) {
222        return $ret;       
223    }
224   
225    $arrChkData = lfgetPageData("page_id = ?", array($data));   
226   
227    if ($arrChkData[0]['edit_flg'] == 2){
228        $ret = true;
229    }
230   
231    return $ret;
232}
233
234?>
Note: See TracBrowser for help on using the repository browser.