[Svn-src-all:1457] [version-2_5-dev 20349] #974 [管理画面]システム設定 高度なデータベース管理 リファクタリング
homan
admin @ mail.ec-cube.net
2011年 2月 23日 (水) 19:26:40 JST
Subversion committed to /home/svn/open 20349
http://svn.ec-cube.net/open_trac/changeset/20349
┌────────────────────────────┐
│更新者 : homan │
│更新日時: 2011-02-23 19:26:40 +0900 (水, 23 2月 2011)│
└────────────────────────────┘
Log:
--------------------------------------------------------
#974 [管理画面]システム設定 高度なデータベース管理 リファクタリング
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
U branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Editdb.php
変更: branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Editdb.php
===================================================================
--- branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Editdb.php 2011-02-23 09:49:46 UTC (rev 20348)
+++ branches/version-2_5-dev/data/class/pages/admin/system/LC_Page_Admin_System_Editdb.php 2011-02-23 10:26:40 UTC (rev 20349)
@@ -43,7 +43,6 @@
*/
function init() {
parent::init();
-
$this->tpl_mainpage = 'system/editdb.tpl';
$this->tpl_subnavi = 'system/subnavi.tpl';
$this->tpl_subno = 'editdb';
@@ -52,22 +51,6 @@
}
/**
- * フォームパラメータ初期化
- *
- * @return void
- */
- function initForm() {
- $objForm = new SC_FormParam();
- $objForm->addParam('モード', 'mode', INT_LEN, 'n', array('ALPHA_CHECK', 'MAX_LENGTH_CHECK'));
- $objForm->addParam('テーブル名', 'table_name');
- $objForm->addParam('カラム名', 'column_name');
- $objForm->addParam('インデックス', 'indexflag');
- $objForm->addParam('インデックス(変更後)', 'indexflag_new');
- $objForm->setParam($_POST);
- $this->objForm = $objForm;
- }
-
- /**
* Page のプロセス.
*
* @return void
@@ -83,16 +66,29 @@
* @return void
*/
function action() {
- //フォームの値を取得
- $this->initForm();
+<<<<<<< .mine
+=======
+>>>>>>> .r20348
+ // 認証可否の判定
+ SC_Utils_Ex::sfIsSuccess(new SC_Session());
+
+ $objFormParam = new SC_FormParam();
+
+ // パラメータの初期化
+ $this->initForm($objFormParam, $_POST);
+
+
switch($this->getMode()) {
case 'confirm' :
- $this->lfDoChange();
+ $message = $this->lfDoChange($objFormParam);
+ if (!is_array($message) && $message != "") {
+ $this->tpl_onload = $message;
+ }
break;
default:
break;
- }
+ }
//インデックスの現在値を取得
$this->arrForm = $this->lfGetIndexList();
@@ -107,13 +103,58 @@
parent::destroy();
}
- function lfGetTargetData() {
- $objQuery = new SC_Query();
- $arrIndexFlag = $this->objForm->getValue('indexflag');
- $arrIndexFlagNew = $this->objForm->getValue('indexflag_new');
- $arrTableName = $this->objForm->getValue('table_name');
- $arrColumnName =$this->objForm->getValue('column_name');
+ /**
+ * フォームパラメータ初期化
+ *
+ * @param object $objFormParam
+ * @param array $arrParams $_POST値
+ * @return void
+ */
+ function initForm(&$objFormParam, &$arrParams) {
+
+ $objFormParam->addParam('モード', 'mode', INT_LEN, 'n', array('ALPHA_CHECK', 'MAX_LENGTH_CHECK'));
+ $objFormParam->addParam('テーブル名', 'table_name');
+ $objFormParam->addParam('カラム名', 'column_name');
+ $objFormParam->addParam('インデックス', 'indexflag');
+ $objFormParam->addParam('インデックス(変更後)', 'indexflag_new');
+ $objFormParam->setParam($arrParams);
+
+ }
+
+ function lfDoChange(&$objFormParam) {
+ $objQuery =& SC_Query::getSingletonInstance();
+ $arrTarget = $this->lfGetTargetData($objFormParam);
+ $message = "";
+ if(is_array($arrTarget) && count($arrTarget) == 0) {
+ $message = "window.alert('変更対象となるデータはありませんでした。');";
+ return $message;
+ } elseif(!is_array($arrTarget) && $arrTarget != "") {
+ return $arrTarget; // window.alert が返ってきているはず。
+ }
+
+ // 変更対象の設定変更
+ foreach($arrTarget as $item) {
+ $index_name = $item['table_name'] . '_' . $item['column_name'] . "_key";
+ $arrField = array( 'fields' => array($item['column_name'] => array()));
+ if($item['indexflag_new'] == '1') {
+ $objQuery->createIndex($item['table_name'], $index_name, $arrField);
+ }else{
+ $objQuery->dropIndex($item['table_name'], $index_name);
+ }
+ }
+ $message = "window.alert('インデックスの変更が完了しました。');";
+ return $message;
+ }
+
+ function lfGetTargetData(&$objFormParam) {
+ $objQuery =& SC_Query::getSingletonInstance();
+ $arrIndexFlag = $objFormParam->getValue('indexflag');
+ $arrIndexFlagNew = $objFormParam->getValue('indexflag_new');
+ $arrTableName = $objFormParam->getValue('table_name');
+ $arrColumnName = $objFormParam->getValue('column_name');
$arrTarget = array();
+ $message = "";
+
// 変更されている対象を走査
for($i = 1; $i <= count($arrIndexFlag); $i++) {
//入力値チェック
@@ -130,8 +171,8 @@
$arrErr = $objErr->arrErr;
if(count($arrErr) != 0) {
// 通常の送信ではエラーにならないはずです。
- $this->tpl_onload = "window.alert('不正なデータがあったため処理を中断しました。');";
- return;
+ $message = "window.alert('不正なデータがあったため処理を中断しました。');";
+ return $message;
}
if($param['indexflag'] != $param['indexflag_new']) {
// 入力値がデータにある対象テーブルかのチェック
@@ -143,26 +184,7 @@
return $arrTarget;
}
- function lfDoChange() {
- $objQuery = new SC_Query();
- $arrTarget = $this->lfGetTargetData();
- if(count($arrTarget) == 0) {
- $this->tpl_onload = "window.alert('変更対象となるデータはありませんでした。');";
- return;
- }
- // 変更対象の設定変更
- foreach($arrTarget as $item) {
- $index_name = $item['table_name'] . '_' . $item['column_name'] . "_key";
- $arrField = array( 'fields' => array($item['column_name'] => array()));
- if($item['indexflag_new'] == '1') {
- $objQuery->createIndex($item['table_name'], $index_name, $arrField);
- }else{
- $objQuery->dropIndex($item['table_name'], $index_name);
- }
- }
- $this->tpl_onload = "window.alert('インデックスの変更が完了しました。');";
- }
/**
* インデックス設定を行う一覧を返す関数
@@ -172,7 +194,7 @@
function lfGetIndexList()
{
// データベースからインデックス設定一覧を取得する
- $objQuery = new SC_Query();
+ $objQuery =& SC_Query::getSingletonInstance();
$objQuery->setOrder("table_name, column_name");
$arrIndexList = $objQuery->select("table_name , column_name , recommend_flg, recommend_comment", "dtb_index_list");
Svn-src-all メーリングリストの案内