tpl_mainpage = 'design/bloc.tpl'; $this->tpl_subnavi = 'design/subnavi.tpl'; $this->tpl_subno_edit = 'bloc'; $this->text_row = 13; $this->tpl_subno = "bloc"; $this->tpl_mainno = "design"; $this->tpl_subtitle = 'ブロック編集'; } } $objPage = new LC_Page(); $objView = new SC_AdminView(); // 認証可否の判定 $objSess = new SC_Session(); sfIsSuccess($objSess); // ブロック一覧を取得 $objPage->arrBlocList = lfgetBlocData(); // ブロックIDを取得 if (isset($_POST['bloc_id'])) { $bloc_id = $_POST['bloc_id']; }else if ($_GET['bloc_id']){ $bloc_id = $_GET['bloc_id']; }else{ $bloc_id = ''; } $objPage->bloc_id = $bloc_id; // bloc_id が指定されている場合にはブロックデータの取得 if ($bloc_id != '') { $arrBlocData = lfgetBlocData(" bloc_id = ? " , array($bloc_id)); $arrBlocData[0]['tpl_path'] = USER_PATH . $arrBlocData[0]['tpl_path']; // テンプレートファイルの読み込み $arrBlocData[0]['tpl_data'] = file_get_contents($arrBlocData[0]['tpl_path']); $objPage->arrBlocData = $arrBlocData[0]; } // メッセージ表示 if ($_GET['msg'] == "on") { // 完了メッセージ $objPage->tpl_onload="alert('登録が完了しました。');"; } // プレビュー表示 if ($_POST['mode'] == "preview") { // プレビューファイル作成 $prev_path = USER_INC_PATH . 'preview/bloc_preview.tpl'; $fp = fopen($prev_path,"w"); fwrite($fp, $_POST['bloc_html']); fclose($fp); // プレビューデータ表示 $objPage->preview = "on"; $objPage->arrBlocData['tpl_data'] = $_POST['bloc_html']; $objPage->arrBlocData['tpl_path'] = $prev_path; $objPage->arrBlocData['bloc_name'] = $_POST['bloc_name']; $objPage->arrBlocData['filename'] = $_POST['filename']; $objPage->text_row = $_POST['html_area_row']; }else{ $objPage->preview = "off"; } // データ登録処理 if ($_POST['mode'] == 'confirm') { // エラーチェック $objPage->arrErr = lfErrorCheck($_POST); // エラーがなければ更新処理を行う if (count($objPage->arrErr) == 0) { // DBへデータを更新する lfEntryBlocData($_POST); // ファイルの削除 $del_file=BLOC_PATH . $arrBlocData[0]['filename']. '.tpl'; if (file_exists($del_file)) { unlink($del_file); } // ファイル作成 $fp = fopen(BLOC_PATH . $_POST['filename'] . '.tpl',"w"); fwrite($fp, $_POST['bloc_html']); fclose($fp); $arrBlocData = lfgetBlocData(" filename = ? " , array($_POST['filename'])); $bloc_id = $arrBlocData[0]['bloc_id']; header("location: ./bloc.php?bloc_id=$bloc_id&msg=on"); }else{ // エラーがあれば入力時のデータを表示する $objPage->arrBlocData = $_POST; } } // データ削除処理 if ($_POST['mode'] == 'delete') { // DBへデータを更新する $objDBConn = new SC_DbConn; // DB操作オブジェクト $sql = ""; // データ更新SQL生成用 $ret = ""; // データ更新結果格納用 $arrDelData = array(); // 更新データ生成用 // 更新データ生成 $arrUpdData = array($arrData['bloc_name'], BLOC_DIR . $arrData['filename'] . '.tpl', $arrData['filename']); // bloc_id が空でない場合にはdeleteを実行 if ($_POST['bloc_id'] !== '') { // SQL生成 $sql = " DELETE FROM dtb_bloc WHERE bloc_id = ?"; // SQL実行 $ret = $objDBConn->query($sql,array($_POST['bloc_id'])); // ページに配置されているデータも削除する $sql = "DELETE FROM dtb_blocposition WHERE bloc_id = ?"; // SQL実行 $ret = $objDBConn->query($sql,array($_POST['bloc_id'])); // ファイルの削除 $del_file = BLOC_PATH . $arrBlocData[0]['filename']. '.tpl'; if(file_exists($del_file)){ unlink($del_file); } } header("location: ./bloc.php"); } // 画面の表示 $objView->assignobj($objPage); $objView->display(MAIN_FRAME); //--------------------------------------------------------------------------------------------------------------------------------------------------------- /************************************************************************************************************** * 関数名 :lfgetBlocData * 処理内容 :ブロック情報を取得する * 引数1 :$where ・・・ Where句文 * 引数2 :$arrVal ・・・ Where句の絞込条件値 * 戻り値 :ブロック情報 **************************************************************************************************************/ function lfgetBlocData($where = '', $arrVal = ''){ $objDBConn = new SC_DbConn; // DB操作オブジェクト $sql = ""; // データ取得SQL生成用 $arrRet = array(); // データ取得用 // SQL生成 $sql = " SELECT "; $sql .= " bloc_id"; $sql .= " ,bloc_name"; $sql .= " ,tpl_path"; $sql .= " ,filename"; $sql .= " ,create_date"; $sql .= " ,update_date"; $sql .= " ,php_path"; $sql .= " ,del_flg"; $sql .= " FROM "; $sql .= " dtb_bloc"; // where句の指定があれば追加 if ($where != '') { $sql .= " WHERE " . $where; } $sql .= " ORDER BY bloc_id"; $arrRet = $objDBConn->getAll($sql, $arrVal); return $arrRet; } /************************************************************************************************************** * 関数名 :lfEntryBlocData * 処理内容 :ブロック情報を更新する * 引数1 :$arrData ・・・ 更新データ * 戻り値 :更新結果 **************************************************************************************************************/ function lfEntryBlocData($arrData){ $objDBConn = new SC_DbConn; // DB操作オブジェクト $sql = ""; // データ更新SQL生成用 $ret = ""; // データ更新結果格納用 $arrUpdData = array(); // 更新データ生成用 $arrChk = array(); // 排他チェック用 // 更新データ生成 $arrUpdData = array($arrData['bloc_name'], BLOC_DIR . $arrData['filename'] . '.tpl', $arrData['filename']); // データが存在しているかチェックを行う if($arrData['bloc_id'] !== ''){ $arrChk = lfgetBlocData("bloc_id = ?", array($arrData['bloc_id'])); } // bloc_id が空 若しくは データが存在していない場合にはINSERTを行う if ($arrData['bloc_id'] === '' or !isset($arrChk[0])) { // SQL生成 $sql = " INSERT INTO dtb_bloc"; $sql .= " ( "; $sql .= " bloc_name "; // ブロック名称 $sql .= " ,tpl_path "; // テンプレート保存先 $sql .= " ,filename "; // ファイル名称 $sql .= " ,create_date "; // 作成日 $sql .= " ,update_date "; // 更新日 $sql .= " ) VALUES ( ?,?,?,now(),now() )"; $sql .= " "; }else{ // データが存在してる場合にはアップデートを行う // SQL生成 $sql = " UPDATE dtb_bloc"; $sql .= " SET"; $sql .= " bloc_name = ? "; // ブロック名称 $sql .= " ,tpl_path = ? "; // テンプレート保存先 $sql .= " ,filename = ? "; // テンプレートファイル名 $sql .= " ,update_date = now()"; $sql .= " WHERE bloc_id = ?"; $sql .= " "; // 更新データにブロックIDを追加 array_push($arrUpdData, $arrData['bloc_id']); } // SQL実行 $ret = $objDBConn->query($sql,$arrUpdData); return $ret; } /************************************************************************************************************** * 関数名 :lfErrorCheck * 処理内容 :入力項目のエラーチェックを行う * 引数1 :$arrData ・・・ 入力データ * 戻り値 :エラー情報 **************************************************************************************************************/ function lfErrorCheck($array) { global $objPage; $objErr = new SC_CheckError($array); $objErr->doFunc(array("ブロック名", "bloc_name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("ファイル名", "filename", STEXT_LEN), array("EXIST_CHECK", "NO_SPTAB", "MAX_LENGTH_CHECK","ALNUM_CHECK")); // 同一のファイル名が存在している場合にはエラー if(!isset($objErr->arrErr['filename']) and $array['filename'] !== ''){ $arrChk = lfgetBlocData("filename = ?", array($array['filename'])); if (count($arrChk[0]) >= 1 and $arrChk[0]['bloc_id'] != $array['bloc_id']) { $objErr->arrErr['filename'] = '※ 同じファイル名のデータが存在しています。別の名称を付けてください。'; } } return $objErr->arrErr; }