Changeset 18344 for branches/comu-ver2/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php
- Timestamp:
- 2009/10/21 11:37:53 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/comu-ver2/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php
r18234 r18344 87 87 // page_id が指定されている場合にはテンプレートデータの取得 88 88 if (is_numeric($page_id) and $page_id != '') { 89 $arrPageData = $this->objLayout->lfgetPageData(" page_id = ? " , array($page_id)); 90 91 if (strlen($arrPageData[0]['filename']) == 0) { 92 $this->arrErr['page_id_err'] = "※ 指定されたページは編集できません。"; 93 // 画面の表示 94 $objView->assignobj($this); 95 $objView->display(MAIN_FRAME); 96 exit; 97 } 98 99 // テンプレートファイルが存在していれば読み込む 100 $tpl_file = USER_TEMPLATE_PATH . "/" . TEMPLATE_NAME . "/" . $arrPageData[0]['filename'] . ".tpl"; 101 if (file_exists($tpl_file)){ 102 $arrPageData[0]['tpl_data'] = file_get_contents($tpl_file); 103 // 存在してなければ, 指定されたテンプレートのファイルを読み込む 104 } else { 105 $arrPageData[0]['tpl_data'] = file_get_contents(TEMPLATE_DIR . $arrPageData[0]['filename'] . ".tpl"); 106 } 107 108 // チェックボックスの値変更 109 $arrPageData[0]['header_chk'] = SC_Utils_Ex::sfChangeCheckBox($arrPageData[0]['header_chk'], true); 110 $arrPageData[0]['footer_chk'] = SC_Utils_Ex::sfChangeCheckBox($arrPageData[0]['footer_chk'], true); 111 112 // ディレクトリを画面表示用に編集 113 $arrPageData[0]['directory'] = str_replace(USER_DIR, '', $arrPageData[0]['php_dir']); 114 115 $this->arrPageData = $arrPageData[0]; 116 } 117 89 $this->lfGetPageData($page_id, $objView); 90 } 91 92 if (!isset($_POST['mode'])) $_POST['mode'] = ""; 93 118 94 // プレビュー処理 119 if (!isset($_POST['mode'])) $_POST['mode'] = "";120 121 95 if ($_POST['mode'] == 'preview') { 122 123 $page_id_old = $page_id; 124 // プレビューの場合ページIDを0にセットする。 125 $page_id = "0"; 126 $url = basename($_POST['url']); 127 128 $tmpPost = $_POST; 129 $tmpPost['page_id'] = $page_id; 130 $tmpPost['url'] = $url; 131 $tmpPost['tpl_dir'] = USER_PATH . "templates/preview/"; 132 133 $arrPreData = $this->objLayout->lfgetPageData("page_id = ?" , array($page_id)); 134 135 // tplファイルの削除 (XXX: 処理の意図が不明。存在していると都合が悪いファイル?) 136 $del_tpl = USER_PATH . "templates/" . $arrPreData[0]['filename'] . '.tpl'; 137 if (file_exists($del_tpl)){ 138 unlink($del_tpl); 139 } 140 141 // DBへデータを更新する 142 $this->lfEntryPageData($tmpPost); 143 144 // TPLファイル作成 145 $preview_tpl = USER_PATH . "templates/preview/" . TEMPLATE_NAME . "/" . $url . '.tpl'; 146 $this->lfCreateFile($preview_tpl); 147 148 // blocposition を削除 149 $objDBConn = new SC_DbConn; // DB操作オブジェクト 150 $sql = 'delete from dtb_blocposition where page_id = 0'; 151 $ret = $objDBConn->query($sql); 152 153 if ($page_id_old != "") { 154 // 登録データを取得 155 $sql = "SELECT 0, target_id, bloc_id, bloc_row FROM dtb_blocposition WHERE page_id = ?"; 156 $ret = $objDBConn->getAll($sql,array($page_id_old)); 157 158 if (count($ret) > 0) { 159 160 // blocposition を複製 161 $sql = " insert into dtb_blocposition ("; 162 $sql .= " page_id,"; 163 $sql .= " target_id,"; 164 $sql .= " bloc_id,"; 165 $sql .= " bloc_row"; 166 $sql .= " )values(?, ?, ?, ?)"; 167 168 // 取得件数文INSERT実行 169 foreach($ret as $key => $val){ 170 $ret = $objDBConn->query($sql,$val); 171 } 172 } 173 } 174 $_SESSION['preview'] = "ON"; 175 $this->sendRedirect($this->getLocation(URL_DIR . "preview/" . DIR_INDEX_URL, array("filename" => $arrPageData[0]["filename"]))); 96 $this->lfPreviewPageData($page_id); 176 97 exit; 177 98 } … … 179 100 // データ登録処理 180 101 if ($_POST['mode'] == 'confirm') { 181 182 // エラーチェック 183 $this->arrErr = $this->lfErrorCheck($_POST); 184 185 // エラーがなければ更新処理を行う 186 if (count($this->arrErr) == 0) { 187 // DBへデータを更新する 188 $this->lfEntryPageData($_POST); 189 190 // ベースデータでなければファイルを削除し、PHPファイルを作成する 191 if (!$this->objLayout->lfCheckBaseData($page_id)) { 192 // ファイル削除 193 $this->objLayout->lfDelFile($arrPageData[0]); 194 // PHPファイル作成 195 $this->lfCreatePHPFile($_POST['url']); 196 } 197 198 // TPLファイル作成 199 $cre_tpl = USER_TEMPLATE_PATH . "/" . TEMPLATE_NAME . "/" . basename($_POST['url']) . '.tpl'; 200 $this->lfCreateFile($cre_tpl); 201 202 // 新規作成の場合、 203 if ($page_id == '') { 204 // ページIDを取得する 205 $arrPageData = $this->objLayout->lfgetPageData(" url = ? AND page_id <> 0" , array(USER_DIR . $_POST['url'] . '.php')); 206 $page_id = $arrPageData[0]['page_id']; 207 } 208 $this->sendRedirect($this->getLocation("./main_edit.php", 209 array("page_id" => $page_id, 210 "msg" => "on"))); 211 exit; 212 } else { 213 // エラーがあれば入力時のデータを表示する 214 $this->arrPageData = $_POST; 215 $this->arrPageData['header_chk'] = SC_Utils_Ex::sfChangeCheckBox(SC_Utils_Ex::sfChangeCheckBox($_POST['header_chk']), true); 216 $this->arrPageData['footer_chk'] = SC_Utils_Ex::sfChangeCheckBox(SC_Utils_Ex::sfChangeCheckBox($_POST['footer_chk']), true); 217 $this->arrPageData['directory'] = ''; 218 $this->arrPageData['filename'] = $_POST['url']; 219 } 102 $this->lfConfirmPageData($page_id); 220 103 } 221 104 222 105 // データ削除処理 ベースデータでなければファイルを削除 223 106 if ($_POST['mode'] == 'delete' and !$this->objLayout->lfCheckBaseData($page_id)) { 224 $this->objLayout->lfDelPageData($_POST['page_id']); 225 $this->sendRedirect($this->getLocation("./main_edit.php")); 107 $this->lfDeletePageData($page_id); 226 108 exit; 227 109 } … … 239 121 function destroy() { 240 122 parent::destroy(); 123 } 124 125 /** 126 * ページデータを取得する. 127 * 128 * @param integer $page_id ページID 129 * @param object $objView ビューオブジェクト 130 * @return void 131 */ 132 function lfGetPageData($page_id, $objView){ 133 $arrPageData = $this->objLayout->lfgetPageData(" page_id = ? " , array($page_id)); 134 135 if (strlen($arrPageData[0]['filename']) == 0) { 136 $this->arrErr['page_id_err'] = "※ 指定されたページは編集できません。"; 137 // 画面の表示 138 $objView->assignobj($this); 139 $objView->display(MAIN_FRAME); 140 exit; 141 } 142 143 // テンプレートファイルが存在していれば読み込む 144 $tpl_file = USER_TEMPLATE_PATH . "/" . TEMPLATE_NAME . "/" . $arrPageData[0]['filename'] . ".tpl"; 145 if (file_exists($tpl_file)){ 146 $arrPageData[0]['tpl_data'] = file_get_contents($tpl_file); 147 // 存在してなければ, 指定されたテンプレートのファイルを読み込む 148 } else { 149 $arrPageData[0]['tpl_data'] = file_get_contents(TEMPLATE_DIR . $arrPageData[0]['filename'] . ".tpl"); 150 } 151 152 // チェックボックスの値変更 153 $arrPageData[0]['header_chk'] = SC_Utils_Ex::sfChangeCheckBox($arrPageData[0]['header_chk'], true); 154 $arrPageData[0]['footer_chk'] = SC_Utils_Ex::sfChangeCheckBox($arrPageData[0]['footer_chk'], true); 155 156 // ディレクトリを画面表示用に編集 157 $arrPageData[0]['directory'] = str_replace(USER_DIR, '', $arrPageData[0]['php_dir']); 158 159 $this->arrPageData = $arrPageData[0]; 160 } 161 162 /** 163 * プレビュー画面を表示する. 164 * 165 * @param integer $page_id ページID 166 * @return void 167 */ 168 function lfPreviewPageData($page_id){ 169 170 $page_id_old = $page_id; 171 // プレビューの場合ページIDを0にセットする。 172 $page_id = "0"; 173 $url = basename($_POST['url']); 174 175 $tmpPost = $_POST; 176 $tmpPost['page_id'] = $page_id; 177 $tmpPost['url'] = $url; 178 $tmpPost['tpl_dir'] = USER_PATH . "templates/preview/"; 179 180 $arrPreData = $this->objLayout->lfgetPageData("page_id = ?" , array($page_id)); 181 182 // tplファイルの削除 (XXX: 処理の意図が不明。存在していると都合が悪いファイル?) 183 $del_tpl = USER_PATH . "templates/" . $arrPreData[0]['filename'] . '.tpl'; 184 if (file_exists($del_tpl)){ 185 unlink($del_tpl); 186 } 187 188 // DBへデータを更新する 189 $this->lfEntryPageData($tmpPost); 190 191 // TPLファイル作成 192 $preview_tpl = USER_PATH . "templates/preview/" . TEMPLATE_NAME . "/" . $url . '.tpl'; 193 $this->lfCreateFile($preview_tpl, $_POST['tpl_data']); 194 195 // blocposition を削除 196 $objDBConn = new SC_DbConn; // DB操作オブジェクト 197 $sql = 'delete from dtb_blocposition where page_id = 0'; 198 $ret = $objDBConn->query($sql); 199 200 if ($page_id_old != "") { 201 // 登録データを取得 202 $sql = "SELECT 0, target_id, bloc_id, bloc_row FROM dtb_blocposition WHERE page_id = ?"; 203 $ret = $objDBConn->getAll($sql,array($page_id_old)); 204 205 if (count($ret) > 0) { 206 207 // blocposition を複製 208 $sql = " insert into dtb_blocposition ("; 209 $sql .= " page_id,"; 210 $sql .= " target_id,"; 211 $sql .= " bloc_id,"; 212 $sql .= " bloc_row"; 213 $sql .= " )values(?, ?, ?, ?)"; 214 215 // 取得件数文INSERT実行 216 foreach($ret as $key => $val){ 217 $ret = $objDBConn->query($sql,$val); 218 } 219 } 220 } 221 $_SESSION['preview'] = "ON"; 222 $this->sendRedirect($this->getLocation(URL_DIR . "preview/" . DIR_INDEX_URL, array("filename" => $arrPageData[0]["filename"]))); 223 224 } 225 226 /** 227 * データ登録処理. 228 * 229 * @param integer $page_id ページID 230 * @return void 231 */ 232 function lfConfirmPageData($page_id){ 233 // エラーチェック 234 $this->arrErr = $this->lfErrorCheck($_POST); 235 236 // エラーがなければ更新処理を行う 237 if (count($this->arrErr) == 0) { 238 // DBへデータを更新する 239 $this->lfEntryPageData($_POST); 240 241 // ベースデータでなければファイルを削除し、PHPファイルを作成する 242 if (!$this->objLayout->lfCheckBaseData($page_id)) { 243 // ファイル削除 244 $this->objLayout->lfDelFile($this->arrPageData); 245 // PHPファイル作成 246 $this->lfCreatePHPFile($_POST['url']); 247 } 248 249 // TPLファイル作成 250 $cre_tpl = USER_TEMPLATE_PATH . "/" . TEMPLATE_NAME . "/" . basename($_POST['url']) . '.tpl'; 251 $this->lfCreateFile($cre_tpl, $_POST['tpl_data']); 252 253 // 新規作成の場合、 254 if ($page_id == '') { 255 // ページIDを取得する 256 $arrPageData = $this->objLayout->lfgetPageData(" url = ? AND page_id <> 0" , array(USER_DIR . $_POST['url'] . '.php')); 257 $page_id = $arrPageData[0]['page_id']; 258 } 259 $this->sendRedirect($this->getLocation("./main_edit.php", 260 array("page_id" => $page_id, 261 "msg" => "on"))); 262 exit; 263 } else { 264 // エラーがあれば入力時のデータを表示する 265 $this->arrPageData = $_POST; 266 $this->arrPageData['header_chk'] = SC_Utils_Ex::sfChangeCheckBox(SC_Utils_Ex::sfChangeCheckBox($_POST['header_chk']), true); 267 $this->arrPageData['footer_chk'] = SC_Utils_Ex::sfChangeCheckBox(SC_Utils_Ex::sfChangeCheckBox($_POST['footer_chk']), true); 268 $this->arrPageData['directory'] = ''; 269 $this->arrPageData['filename'] = $_POST['url']; 270 } 241 271 } 242 272 … … 349 379 350 380 /** 381 * ページデータを削除する. 382 * 383 * @param integer $page_id ページID 384 * @return void 385 */ 386 function lfDeletePageData($page_id){ 387 $this->objLayout->lfDelPageData($_POST['page_id']); 388 $this->sendRedirect($this->getLocation("./main_edit.php")); 389 } 390 391 /** 351 392 * 入力項目のエラーチェックを行う. 352 393 * … … 403 444 * 404 445 * @param string $path テンプレートファイルのパス 405 * @return void 406 */ 407 function lfCreateFile($path){ 446 * @param string $data テンプレートの内容 447 * @return void 448 */ 449 function lfCreateFile($path, $data){ 408 450 409 451 // ディレクトリが存在していなければ作成する … … 414 456 // ファイル作成 415 457 $fp = fopen($path,"w"); 416 fwrite($fp, $ _POST['tpl_data']); // FIXME いきなり POST はちょっと...458 fwrite($fp, $data); // FIXME いきなり POST はちょっと... 417 459 fclose($fp); 418 460 }
Note: See TracChangeset
for help on using the changeset viewer.