Index: /branches/feature-module-update/html/admin/contents/csv_sql.php
===================================================================
--- /branches/feature-module-update/html/admin/contents/csv_sql.php	(revision 15532)
+++ /branches/feature-module-update/html/admin/contents/csv_sql.php	(revision 16449)
@@ -5,389 +5,15 @@
  * http://www.lockon.co.jp/
  */
+
+// {{{ requires
 require_once("../../require.php");
-require_once(DATA_PATH . "include/csv_output.inc");
+require_once(CLASS_EX_PATH . "page_extends/admin/contents/LC_Page_Admin_Contents_CsvSql_Ex.php");
 
-class LC_Page {
-	var $arrForm;
-	var $arrHidden;
+// }}}
+// {{{ generate page
 
-	function LC_Page() {
-		$this->tpl_mainpage = 'contents/csv_sql.tpl';
-		$this->tpl_subnavi = 'contents/subnavi.tpl';
-		$this->tpl_subno = 'csv';
-		$this->tpl_subno_csv = 'csv_sql';
-		$this->tpl_mainno = "contents";
-		$this->tpl_subtitle = 'CSV出力設定';
-	}
-}
-
-$objPage = new LC_Page();
-$objView = new SC_AdminView();
-
-$objPage->arrSubnavi = $arrSubnavi;
-$objPage->arrSubnaviName = $arrSubnaviName;
-
-// 認証可否の判定
-$objSess = new SC_Session();
-sfIsSuccess($objSess);
-
-// SQL_IDの取得
-if ($_POST['sql_id'] != "") {
-	$sql_id = $_POST['sql_id'];
-}elseif($_GET['sql_id'] != ""){
-	$sql_id = $_GET['sql_id'];
-}else{
-	$sql_id = "";
-}
-
-$mode = $_POST['mode'];
-
-switch($_POST['mode']) {
-	// データの登録
-	case "confirm":
-		// エラーチェック
-		$objPage->arrErr = lfCheckError($_POST);
-		
-		if (count($objPage->arrErr) <= 0){
-			// データの更新
-			$sql_id = lfUpdData($sql_id, $_POST);
-			// 完了メッセージ表示
-			$objPage->tpl_onload = "alert('登録が完了しました。');";
-		}
-		break;
-	
-	// 確認画面
-	case "preview":
-		// SQL文表示
-		$sql = "SELECT \n" . $_POST['csv_sql'];
-		$objPage->sql = $sql;
-		
-		// エラー表示
-		$objErrMsg = lfCheckSQL($_POST);
-		if ($objErrMsg != "") {
-			$errMsg = $objErrMsg->message . "\n" . $objErrMsg->userinfo;
-		}
-		
-		$objPage->sqlerr = $errMsg;
-
-		$objPage->objView = $objView;
-		
-		// 画面の表示
-		$objView->assignobj($objPage);
-		$objView->display('contents/csv_sql_view.tpl');
-		exit;
-		break;
-
-	// 新規作成
-	case "new_page":
-		header("location: ./csv_sql.php");
-		break;
-		
-	// データ削除
-	case "delete":
-		lfDelData($sql_id);
-		header("location: ./csv_sql.php");
-		break;
-		
-	case "csv_output":
-		// CSV出力データ取得
-		$arrCsvData = lfGetSqlList(" WHERE sql_id = ?", array($_POST['csv_output_id']));
-		
-		$objQuery = new SC_Query();
-		
-		$arrCsvOutputData = $objQuery->getall("SELECT " . $arrCsvData[0]['csv_sql']);
-		
-		if (count($arrCsvOutputData) > 0) {
-			
-			$arrKey = array_keys(sfSwapArray($arrCsvOutputData));
-			foreach($arrKey as $data) {
-				if ($i != 0) $header .= ", ";
-				$header .= $data;
-				$i ++;
-			}
-			$header .= "\n";
-
-			$data = lfGetCSVData($arrCsvOutputData, $arrKey);
-			// CSV出力
-			sfCSVDownload($header.$data);
-			exit;
-		break;
-		}else{
-			$objPage->tpl_onload = "alert('出力データがありません。');";
-			$sql_id = "";
-			$_POST="";
-		}
-		break;
-}
-
-// mode が confirm 以外のときは完了メッセージは出力しない
-if ($mode != "confirm" and $mode != "csv_output") {
-	$objPage->tpl_onload = "";
-}
-
-// 登録済みSQL一覧取得
-$arrSqlList = lfGetSqlList();
-
-// 編集用SQLデータの取得
-if ($sql_id != "") {
-	$arrSqlData = lfGetSqlList(" WHERE sql_id = ?", array($sql_id));
-}
-
-// テーブル一覧を取得する
-$arrTableList = lfGetTableList();
-$arrTableList = sfSwapArray($arrTableList);
-
-// 現在選択されているテーブルを取得する
-if ($_POST['selectTable'] == ""){
-	$selectTable = $arrTableList['table_name'][0];
-}else{
-	$selectTable = $_POST['selectTable'];
-}
-
-// カラム一覧を取得する
-$arrColList = lfGetColumnList($selectTable);
-$arrColList =  sfSwapArray($arrColList);
-
-// 表示させる内容を編集
-foreach ($arrTableList['description'] as $key => $val) {
-	$arrTableList['description'][$key] = $arrTableList['table_name'][$key] . "：" . $arrTableList['description'][$key];
-}
-foreach ($arrColList['description'] as $key => $val) {
-	$arrColList['description'][$key] = $arrColList['column_name'][$key] . "：" . $arrColList['description'][$key];
-}
-
-
-$arrDiff = array_diff(sfGetColumnList($selectTable), $arrColList["column_name"]); 
-$arrColList["column_name"] = array_merge($arrColList["column_name"], $arrDiff);
-$arrColList["description"] = array_merge($arrColList["description"], $arrDiff);
-
-// テンプレートに出力するデータをセット
-$objPage->arrSqlList = $arrSqlList;																// SQL一覧
-$objPage->arrTableList = sfarrCombine($arrTableList['table_name'], $arrTableList['description']);	// テーブル一覧
-$objPage->arrColList = sfarrCombine($arrColList['column_name'],$arrColList['description']);			// カラム一覧
-$objPage->selectTable = $selectTable;															// 選択されているテーブル
-$objPage->sql_id = $sql_id;																		// 選択されているSQL
-
-// POSTされたデータをセットする
-if (count($_POST) > 0) {
-	$arrSqlData[0]['sql_name'] = $_POST['sql_name'];
-	$arrSqlData[0]['csv_sql'] = $_POST['csv_sql'];
-}
-$objPage->arrSqlData = $arrSqlData[0];															// 選択されているSQLデータ
-
-// 画面の表示
-$objView->assignobj($objPage);
-$objView->display(MAIN_FRAME);
-
-//---------------------------------------------------------------------------------------------------------------------------------------------------------
-/**************************************************************************************************************
- * 関数名	：lfGetTableList
- * 処理内容	：テーブル一覧を取得する
- * 引数		：なし
- * 戻り値 　：取得結果
- **************************************************************************************************************/
-function lfGetTableList(){
-	$objQuery = new SC_Query();
-	$arrRet = array();		// 結果取得用
-
-	$sql = "";
-	$sql .= "SELECT table_name, description FROM dtb_table_comment WHERE column_name IS NULL ORDER BY table_name";
-	$arrRet = $objQuery->getAll($sql);
-	
-	
-	return $arrRet;
-}
-
-
-/**************************************************************************************************************
- * 関数名	：lfGetColunmList
- * 処理内容	：テーブルのカラム一覧を取得する
- * 引数		：$selectTable：テーブル名称
- * 戻り値 　：取得結果
- **************************************************************************************************************/
-function lfGetColumnList($selectTable){
-	$objQuery = new SC_Query();
-	$arrRet = array();		// 結果取得用
-	$sql = "";
-	$sql .= " SELECT column_name, description FROM dtb_table_comment WHERE table_name = ? AND column_name IS NOT NULL";
-	$arrRet = $objQuery->getAll($sql, array($selectTable));	
-	
-	return $arrRet;
-	
-}
-
-/**************************************************************************************************************
- * 関数名	：lfGetSqlList
- * 処理内容	：登録済みSQL一覧を取得する
- * 引数1	：$where：Where句
- * 引数2	：$arrData：絞り込みデータ
- * 戻り値 　：取得結果
- **************************************************************************************************************/
-function lfGetSqlList($where = "" , $arrData = array()){
-	$objQuery = new SC_Query();
-	$arrRet = array();		// 結果取得用
-	
-	$sql = "";
-	$sql .= " SELECT";
-	$sql .= "     sql_id,";
-	$sql .= "     sql_name,";
-	$sql .= "     csv_sql,";
-	$sql .= "     update_date,";
-	$sql .= "     create_date";
-	$sql .= " FROM";
-	$sql .= "     dtb_csv_sql";
-	
-	// Where句の指定があれば結合する
-	if ($where != "") {
-		$sql .= " $where ";
-	}else{
-		$sql .= " ORDER BY sql_id ";
-	}
-	$sql .= " ";
-
-	// データを引数で渡されている場合にはセットする
-	if (count($arrData) > 0) {
-		$arrRet = $objQuery->getall($sql, $arrData);
-	}else{
-		$arrRet = $objQuery->getall($sql);
-	}
-
-	return $arrRet;
-	
-}
-
-/**************************************************************************************************************
- * 関数名	：lfUpdCsvOutput
- * 処理内容	：入力項目のエラーチェックを行う
- * 引数		：POSTデータ
- * 戻値		：エラー内容
- **************************************************************************************************************/
-function lfCheckError($data){
-	$objErr = new SC_CheckError();
-	$objErr->doFunc( array("名称", "sql_name"), array("EXIST_CHECK") );
-	$objErr->doFunc( array("SQL文", "csv_sql", "30000"), array("EXIST_CHECK", "MAX_LENGTH_CHECK") );
-	
-	// SQLの妥当性チェック
-	if ($objErr->arrErr['csv_sql'] == "") {
-		$objsqlErr = lfCheckSQL($data);
-		if ($objsqlErr != "") {
-			$objErr->arrErr["csv_sql"] = "SQL文が不正です。SQL文を見直してください";
-		}
-	}
-	
-	return $objErr->arrErr;
-
-}
-
-/**************************************************************************************************************
- * 関数名	：lfCheckSQL
- * 処理内容	：入力されたSQL文が正しいかチェックを行う
- * 引数		：POSTデータ
- * 戻値		：エラー内容
- **************************************************************************************************************/
-function lfCheckSQL($data){
-	$err = "";
-	$objDbConn = new SC_DbConn();
-	$sql = "SELECT " . $data['csv_sql'] . " ";
-	$ret = $objDbConn->conn->query($sql);
-	if ($objDbConn->conn->isError($ret)){
-		$err = $ret;
-	}
-	
-	return $err;
-}
-
-function lfprintr($data){
-	print_r($data);
-}
-
-/**************************************************************************************************************
- * 関数名	：lfUpdData
- * 処理内容	：DBにデータを保存する
- * 引数1	：$sql_id･･･更新するデータのSQL_ID
- * 引数2	：$arrData･･･更新データ
- * 戻り値	：$sql_id:SQL_IDを返す
- **************************************************************************************************************/
-function lfUpdData($sql_id = "", $arrData = array()){
-	$objQuery = new SC_Query();		// DB操作オブジェクト
-	$sql = "";						// データ取得SQL生成用
-	$arrRet = array();				// データ取得用(更新判定)
-	$arrVal = array();				// データ更新
-
-	// sql_id が指定されている場合にはUPDATE
-	if ($sql_id != "") {
-		// 存在チェック
-		$arrSqlData = lfGetSqlList(" WHERE sql_id = ?", array($sql_id));
-		if (count($arrSqlData) > 0) {
-			// データ更新
-			$sql = "UPDATE dtb_csv_sql SET sql_name = ?, csv_sql = ?, update_date = now() WHERE sql_id = ? ";
-			$arrVal= array($arrData['sql_name'], $arrData['csv_sql'], $sql_id);
-		}else{
-			// データの新規作成
-			$sql_id = "";
-			$sql = "INSERT INTO dtb_csv_sql (sql_name, csv_sql, create_date, update_date) values (?, ?, now(), now()) ";
-			$arrVal= array($arrData['sql_name'], $arrData['csv_sql']);
-			
-		}
-	}else{
-		// データの新規作成
-		$sql = "INSERT INTO dtb_csv_sql (sql_name, csv_sql, create_date, update_date) values (?, ?, now(), now()) ";
-		$arrVal= array($arrData['sql_name'], $arrData['csv_sql']);
-	}
-	// SQL実行	
-	$arrRet = $objQuery->query($sql,$arrVal);
-	
-	// 新規作成時は$sql_idを取得
-	if ($sql_id == "") {
-		$arrNewData = lfGetSqlList(" ORDER BY create_date DESC");
-		$sql_id = $arrNewData[0]['sql_id'];
-	}
-	
-	return $sql_id;
-}
-
-
-/**************************************************************************************************************
- * 関数名	：lfDelData
- * 処理内容	：データを削除する
- * 引数1	：$sql_id･･･削除するデータのSQL_ID
- * 戻り値	：実行結果　TRUE：成功 FALSE：失敗
- **************************************************************************************************************/
-function lfDelData($sql_id = ""){
-	$objQuery = new SC_Query();		// DB操作オブジェクト
-	$sql = "";						// データ取得SQL生成用
-	$Ret = false;					// 実行結果
-
-	// sql_id が指定されている場合のみ実行
-	if ($sql_id != "") {
-		// データの削除
-		$sql = "DELETE FROM dtb_csv_sql WHERE sql_id = ? ";
-		// SQL実行	
-		$ret = $objQuery->query($sql,array($sql_id));
-	}else{
-		$ret = false;
-	}
-
-	// 結果を返す
-	return $ret;
-}
-
-
-//---- CSV出力用データ取得
-function lfGetCSVData( $array, $arrayIndex){	
-	for ($i=0; $i<count($array); $i++){
-		for ($j=0; $j<count($array[$i]); $j++ ){
-			if ( $j > 0 ) $return .= ",";
-			$return .= "\"";			
-			if ( $arrayIndex ){
-				$return .= mb_ereg_replace("<","＜",mb_ereg_replace( "\"","\"\"",$array[$i][$arrayIndex[$j]] )) ."\"";	
-			} else {
-				$return .= mb_ereg_replace("<","＜",mb_ereg_replace( "\"","\"\"",$array[$i][$j] )) ."\"";
-			}
-		}
-		$return .= "\n";			
-	}
-	
-	return $return;
-}
-
+$objPage = new LC_Page_Admin_Contents_CsvSql_Ex();
+$objPage->init();
+$objPage->process();
+register_shutdown_function(array($objPage, "destroy"));
+?>
Index: /branches/feature-module-update/data/class/pages/admin/contents/LC_Page_Admin_Contents_CsvSql.php
===================================================================
--- /branches/feature-module-update/data/class/pages/admin/contents/LC_Page_Admin_Contents_CsvSql.php	(revision 16449)
+++ /branches/feature-module-update/data/class/pages/admin/contents/LC_Page_Admin_Contents_CsvSql.php	(revision 16449)
@@ -0,0 +1,422 @@
+<?php
+/*
+ * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ */
+
+// {{{ requires
+require_once(CLASS_PATH . "pages/LC_Page.php");
+
+/**
+ * CSV 出力項目設定(高度な設定)のページクラス.
+ *
+ * @package Page
+ * @author LOCKON CO.,LTD.
+ * @version $Id$
+ */
+class LC_Page_Admin_Contents_CsvSql extends LC_Page {
+
+    // }}}
+    // {{{ functions
+
+    /**
+     * Page を初期化する.
+     *
+     * @return void
+     */
+    function init() {
+        parent::init();
+        $this->tpl_mainpage = 'contents/csv_sql.tpl';
+        $this->tpl_subnavi = 'contents/subnavi.tpl';
+        $this->tpl_subno = 'csv';
+        $this->tpl_subno_csv = 'csv_sql';
+        $this->tpl_mainno = "contents";
+        $this->tpl_subtitle = 'CSV出力設定';
+    }
+
+    /**
+     * Page のプロセス.
+     *
+     * @return void
+     */
+    function process() {
+        $objView = new SC_AdminView();
+        $objDbFactory = SC_DB_DBFactory_Ex::getInstance();
+
+        $masterData = new SC_DB_MasterData_Ex();
+        //$this->arrSubnavi = $masterData->getMasterData("mtb_subnavi");
+        //$this->arrSubnaviName = $masterData->getMasterData("mtb_subnavi_name");
+
+        // 認証可否の判定
+        $objSess = new SC_Session();
+        SC_Utils_Ex::sfIsSuccess($objSess);
+
+        if (!isset($_POST['mode'])) $_POST['mode'] = "";
+        if (!isset($_POST['sql_id'])) $_POST['sql_id'] = "";
+        if (!isset($_GET['sql_id'])) $_GET['sql_id'] = "";
+        if (!isset($_POST['selectTable'])) $_POST['selectTable'] = "";
+
+        // SQL_IDの取得
+        if ($_POST['sql_id'] != "") {
+            $sql_id = $_POST['sql_id'];
+        }elseif($_GET['sql_id'] != ""){
+            $sql_id = $_GET['sql_id'];
+        }else{
+            $sql_id = "";
+        }
+
+        $mode = $_POST['mode'];
+
+        switch($_POST['mode']) {
+            // データの登録
+        case "confirm":
+            // エラーチェック
+            $this->arrErr = $this->lfCheckError($_POST);
+
+            if (count($this->arrErr) <= 0){
+                // データの更新
+                $sql_id = $this->lfUpdData($sql_id, $_POST);
+                // 完了メッセージ表示
+                $this->tpl_onload = "alert('登録が完了しました。');";
+            }
+            break;
+
+            // 確認画面
+        case "preview":
+            // SQL文表示
+            $sql = "SELECT \n" . $_POST['csv_sql']; // FIXME
+            $this->sql = $sql;
+
+            // エラー表示
+            $objErrMsg = $this->lfCheckSQL($_POST);
+            if ($objErrMsg != "") {
+                $errMsg = $objErrMsg->message . "\n" . $objErrMsg->userinfo;
+            }
+
+            $this->sqlerr = isset($errMsg) ? $errMsg : "" ;
+
+            $this->objView = $objView;
+
+            // 画面の表示
+            $objView->assignobj($this);
+            $objView->display('contents/csv_sql_view.tpl');
+            exit;
+            break;
+
+            // 新規作成
+        case "new_page":
+            $this->sendRedirect($this->getLocation("./csv_sql.php"));
+            break;
+
+            // データ削除
+        case "delete":
+            $this->lfDelData($sql_id);
+            $this->sendRedirect($this->getLocation("./csv_sql.php"));
+            break;
+
+        case "csv_output":
+            // CSV出力データ取得
+            $arrCsvData = $this->lfGetSqlList(" WHERE sql_id = ?", array($_POST['csv_output_id']));
+
+            $objQuery = new SC_Query();
+
+            $arrCsvOutputData = $objQuery->getall("SELECT " . $arrCsvData[0]['csv_sql']);
+
+            if (count($arrCsvOutputData) > 0) {
+
+                $arrKey = array_keys(SC_Utils_Ex::sfSwapArray($arrCsvOutputData));
+                $i = 0;
+                $header = "";
+                foreach($arrKey as $data) {
+                    if ($i != 0) $header .= ", ";
+                    $header .= $data;
+                    $i ++;
+                }
+                $header .= "\n";
+
+                $data = $this->lfGetCSVData($arrCsvOutputData, $arrKey);
+                // CSV出力
+                SC_Utils_Ex::sfCSVDownload($header.$data);
+                exit;
+                break;
+            }else{
+                $this->tpl_onload = "alert('出力データがありません。');";
+                $sql_id = "";
+                $_POST="";
+            }
+            break;
+        }
+
+        // mode が confirm 以外のときは完了メッセージは出力しない
+        if ($mode != "confirm" and $mode != "csv_output") {
+            $this->tpl_onload = "";
+        }
+
+        // 登録済みSQL一覧取得
+        $arrSqlList = $this->lfGetSqlList();
+
+        // 編集用SQLデータの取得
+        if ($sql_id != "") {
+            $arrSqlData = $this->lfGetSqlList(" WHERE sql_id = ?", array($sql_id));
+        }
+
+        // テーブル一覧を取得する
+        $arrTableList = $this->lfGetTableList();
+        $arrTableList = SC_Utils_Ex::sfSwapArray($arrTableList);
+
+        // 現在選択されているテーブルを取得する
+        if ($_POST['selectTable'] == ""){
+            $selectTable = $arrTableList['table_name'][0];
+        }else{
+            $selectTable = $_POST['selectTable'];
+        }
+
+        // カラム一覧を取得する
+        $arrColList = $this->lfGetColumnList($selectTable);
+        $arrColList =  SC_Utils_Ex::sfSwapArray($arrColList);
+
+        // 表示させる内容を編集
+        foreach ($arrTableList['description'] as $key => $val) {
+            $arrTableList['description'][$key] = $arrTableList['table_name'][$key] . "：" . $arrTableList['description'][$key];
+        }
+        foreach ($arrColList['description'] as $key => $val) {
+            $arrColList['description'][$key] = $arrColList['column_name'][$key] . "：" . $arrColList['description'][$key];
+        }
+
+
+        $arrDiff = array_diff($objDbFactory->sfGetColumnList($selectTable), $arrColList["column_name"]);
+        $arrColList["column_name"] = array_merge($arrColList["column_name"], $arrDiff);
+        $arrColList["description"] = array_merge($arrColList["description"], $arrDiff);
+
+        // テンプレートに出力するデータをセット
+        $this->arrSqlList = $arrSqlList;	// SQL一覧
+        $this->arrTableList = SC_Utils_Ex::sfarrCombine($arrTableList['table_name'], $arrTableList['description']);	// テーブル一覧
+        $this->arrColList = SC_Utils_Ex::sfarrCombine($arrColList['column_name'],$arrColList['description']);			// カラム一覧
+        $this->selectTable = $selectTable;	// 選択されているテーブル
+        $this->sql_id = $sql_id;			// 選択されているSQL
+
+        // POSTされたデータをセットする
+        if (count($_POST) > 0) {
+            $arrSqlData[0]['sql_name'] = isset($_POST['sql_name']) ? $_POST['sql_name'] : "";
+            $arrSqlData[0]['csv_sql'] = isset($_POST['csv_sql']) ? $_POST['csv_sql'] : "";
+        }
+        $this->arrSqlData = $arrSqlData[0];	// 選択されているSQLデータ
+
+        // 画面の表示
+        $objView->assignobj($this);
+        $objView->display(MAIN_FRAME);
+    }
+
+    /**
+     * デストラクタ.
+     *
+     * @return void
+     */
+    function destroy() {
+        parent::destroy();
+    }
+
+    /**
+     * テーブル一覧を取得する.
+     *
+     * @return void
+     */
+    function lfGetTableList(){
+        $objQuery = new SC_Query();
+        $arrRet = array();		// 結果取得用
+
+        $sql = "";
+        $sql .= "SELECT table_name, description FROM dtb_table_comment WHERE column_name IS NULL ORDER BY table_name";
+        $arrRet = $objQuery->getAll($sql);
+
+        return $arrRet;
+    }
+
+    /**
+     * テーブルのカラム一覧を取得する.
+     *
+     * @param string $selectTable テーブル名
+     * @return array カラム一覧の配列
+     */
+    function lfGetColumnList($selectTable){
+        $objQuery = new SC_Query();
+        $arrRet = array();		// 結果取得用
+        $sql = "";
+        $sql .= " SELECT column_name, description FROM dtb_table_comment WHERE table_name = ? AND column_name IS NOT NULL";
+        $arrRet = $objQuery->getAll($sql, array($selectTable));
+
+        return $arrRet;
+    }
+
+    /**
+     * 登録済みSQL一覧を取得する.
+     *
+     * @param string $where Where句
+     * @param array $arrData 絞り込みデータ
+     * @return array 取得結果の配列
+     */
+    function lfGetSqlList($where = "" , $arrData = array()){
+        $objQuery = new SC_Query();
+        $arrRet = array();		// 結果取得用
+
+        $sql = "";
+        $sql .= " SELECT";
+        $sql .= "     sql_id,";
+        $sql .= "     sql_name,";
+        $sql .= "     csv_sql,";
+        $sql .= "     update_date,";
+        $sql .= "     create_date";
+        $sql .= " FROM";
+        $sql .= "     dtb_csv_sql";
+
+        // Where句の指定があれば結合する
+        if ($where != "") {
+            $sql .= " $where ";
+        }else{
+            $sql .= " ORDER BY sql_id ";
+        }
+        $sql .= " ";
+
+        // データを引数で渡されている場合にはセットする
+        if (count($arrData) > 0) {
+            $arrRet = $objQuery->getall($sql, $arrData);
+        }else{
+            $arrRet = $objQuery->getall($sql);
+        }
+
+        return $arrRet;
+    }
+
+    /**
+     * 入力項目のエラーチェックを行う.
+     *
+     * @param array POSTデータ
+     * @return array エラー内容の配列
+     */
+    function lfCheckError($data){
+        $objErr = new SC_CheckError();
+        $objErr->doFunc( array("名称", "sql_name"), array("EXIST_CHECK") );
+        $objErr->doFunc( array("SQL文", "csv_sql", "30000"), array("EXIST_CHECK", "MAX_LENGTH_CHECK") );
+
+        // SQLの妥当性チェック
+        if ($objErr->arrErr['csv_sql'] == "") {
+            $objsqlErr = $this->lfCheckSQL($data);
+            if ($objsqlErr != "") {
+                $objErr->arrErr["csv_sql"] = "SQL文が不正です。SQL文を見直してください";
+            }
+        }
+
+        return $objErr->arrErr;
+    }
+
+    /**
+     * 入力されたSQL文が正しいかチェックを行う.
+     *
+     * @param array POSTデータ
+     * @return array エラー内容
+     */
+    function lfCheckSQL($data){
+        $err = "";
+        $objDbConn = new SC_DbConn();
+        $sql = "SELECT " . $data['csv_sql'] . " ";
+        $ret = $objDbConn->conn->query($sql);
+        if ($objDbConn->conn->isError($ret)){
+            $err = $ret;
+        }
+
+        return $err;
+    }
+
+    /**
+     * DBにデータを保存する.
+     *
+     * @param integer $sql_id 更新するデータのSQL_ID
+     * @param array $arrData 更新データの配列
+     * @return integer $sql_id SQL_IDを返す
+     */
+    function lfUpdData($sql_id = "", $arrData = array()){
+        $objQuery = new SC_Query();		// DB操作オブジェクト
+        $sql = "";						// データ取得SQL生成用
+        $arrRet = array();				// データ取得用(更新判定)
+        $arrVal = array();				// データ更新
+
+        // sql_id が指定されている場合にはUPDATE
+        if ($sql_id != "") {
+            // 存在チェック
+            $arrSqlData = $this->lfGetSqlList(" WHERE sql_id = ?", array($sql_id));
+            if (count($arrSqlData) > 0) {
+                // データ更新
+                $sql = "UPDATE dtb_csv_sql SET sql_name = ?, csv_sql = ?, update_date = now() WHERE sql_id = ? ";
+                $arrVal= array($arrData['sql_name'], $arrData['csv_sql'], $sql_id);
+            }else{
+                // データの新規作成
+                $sql_id = "";
+                $sql = "INSERT INTO dtb_csv_sql (sql_name, csv_sql, create_date, update_date) values (?, ?, now(), now()) ";
+                $arrVal= array($arrData['sql_name'], $arrData['csv_sql']);
+
+            }
+        }else{
+            // データの新規作成
+            $sql = "INSERT INTO dtb_csv_sql (sql_name, csv_sql, create_date, update_date) values (?, ?, now(), now()) ";
+            $arrVal= array($arrData['sql_name'], $arrData['csv_sql']);
+        }
+        // SQL実行
+        $arrRet = $objQuery->query($sql,$arrVal);
+
+        // 新規作成時は$sql_idを取得
+        if ($sql_id == "") {
+            $arrNewData = $this->lfGetSqlList(" ORDER BY create_date DESC");
+            $sql_id = $arrNewData[0]['sql_id'];
+        }
+
+        return $sql_id;
+    }
+
+
+    /**
+     * 登録済みデータを削除する.
+     *
+     * @param integer $sql_id 削除するデータのSQL_ID
+     * @return bool 実行結果 TRUE：成功 FALSE：失敗
+     */
+    function lfDelData($sql_id = ""){
+        $objQuery = new SC_Query();		// DB操作オブジェクト
+        $sql = "";						// データ取得SQL生成用
+        $Ret = false;					// 実行結果
+
+        // sql_id が指定されている場合のみ実行
+        if ($sql_id != "") {
+            // データの削除
+            $sql = "DELETE FROM dtb_csv_sql WHERE sql_id = ? ";
+            // SQL実行
+            $ret = $objQuery->query($sql,array($sql_id));
+        }else{
+            $ret = false;
+        }
+
+        // 結果を返す
+        return $ret;
+    }
+
+
+    //---- CSV出力用データ取得
+    function lfGetCSVData( $array, $arrayIndex){
+        $return = "";
+        for ($i=0; $i<count($array); $i++){
+            for ($j=0; $j<count($array[$i]); $j++ ){
+                if ( $j > 0 ) $return .= ",";
+                $return .= "\"";
+                if ( $arrayIndex ){
+                    $return .= mb_ereg_replace("<","＜",mb_ereg_replace( "\"","\"\"",$array[$i][$arrayIndex[$j]] )) ."\"";
+                } else {
+                    $return .= mb_ereg_replace("<","＜",mb_ereg_replace( "\"","\"\"",$array[$i][$j] )) ."\"";
+                }
+            }
+            $return .= "\n";
+        }
+
+        return $return;
+    }
+}
+?>
Index: /branches/feature-module-update/data/class_extends/page_extends/admin/contents/LC_Page_Admin_Contents_CsvSql_Ex.php
===================================================================
--- /branches/feature-module-update/data/class_extends/page_extends/admin/contents/LC_Page_Admin_Contents_CsvSql_Ex.php	(revision 16449)
+++ /branches/feature-module-update/data/class_extends/page_extends/admin/contents/LC_Page_Admin_Contents_CsvSql_Ex.php	(revision 16449)
@@ -0,0 +1,52 @@
+<?php
+/*
+ * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
+ *
+ * http://www.lockon.co.jp/
+ */
+
+// {{{ requires
+require_once(CLASS_PATH . "pages/admin/contents/LC_Page_Admin_Contents_CsvSql.php");
+
+/**
+ * CSV出力項目設定(高度な設定) のページクラス(拡張).
+ *
+ * LC_Page_Admin_Contents_CsvSql をカスタマイズする場合はこのクラスを編集する.
+ *
+ * @package Page
+ * @author LOCKON CO.,LTD.
+ * @version $Id$
+ */
+class LC_Page_Admin_Contents_CsvSql_Ex extends LC_Page_Admin_Contents_CsvSql {
+
+    // }}}
+    // {{{ functions
+
+    /**
+     * Page を初期化する.
+     *
+     * @return void
+     */
+    function init() {
+        parent::init();
+    }
+
+    /**
+     * Page のプロセス.
+     *
+     * @return void
+     */
+    function process() {
+        parent::process();
+    }
+
+    /**
+     * デストラクタ.
+     *
+     * @return void
+     */
+    function destroy() {
+        parent::destroy();
+    }
+}
+?>
