Changeset 20172


Ignore:
Timestamp:
2011/02/16 15:46:09 (13 years ago)
Author:
kajiwara
Message:

#973 規格管理画面のリファクタリング

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Class.php

    r20116 r20172  
    6868    function action() { 
    6969        $objSess = new SC_Session(); 
    70         $objQuery =& SC_Query::getSingletonInstance(); 
    7170        $objDb = new SC_Helper_DB_Ex(); 
     71        $objFormParam = new SC_FormParam(); 
    7272 
    7373        // 認証可否の判定 
    74         SC_Utils_Ex::sfIsSuccess($objSess); 
     74        SC_Utils_Ex::sfIsSuccess(new SC_Session()); 
    7575 
    7676        // 要求判定 
     
    7878            // 編集処理 
    7979        case 'edit': 
    80             // POST値の引き継ぎ 
    81             $this->arrForm = $_POST; 
    82             // 入力文字の変換 
    83             $this->arrForm = $this->lfConvertParam($this->arrForm); 
    84             // エラーチェック 
    85             $this->arrErr = $this->lfErrorCheck(); 
    86             if(count($this->arrErr) <= 0) { 
    87                 if($_POST['class_id'] == "") { 
     80            // パラメータ設定 
     81            $this->lfInitParam($objFormParam); 
     82            $objFormParam->setParam($_POST); 
     83            $objFormParam->convParam(); 
     84            // 入力パラメーターチェック 
     85            $this->arrErr = $this->lfCheckError($objFormParam); 
     86            if (SC_Utils_Ex::isBlank($this->arrErr)) { 
     87                $this->arrForm = $objFormParam->getHashArray(); 
     88                //新規規格追加かどうかを判定する 
     89                $is_insert = $this->lfCheckInsert($this->arrForm); 
     90                if($is_insert) { 
    8891                    $this->lfInsertClass($this->arrForm); // 新規作成 
    8992                } else { 
     
    9194                } 
    9295                // 再表示 
    93                 $this->objDisplay->reload(); 
     96                SC_Response::reload(); 
    9497            } else { 
    9598                // POSTデータを引き継ぐ 
    96                 $this->tpl_class_id = $_POST['class_id']; 
    97             } 
    98             break; 
     99                $this->tpl_class_id = $this->arrForm['class_id']; 
     100            } 
     101            break; 
     102 
    99103            // 削除 
    100104        case 'delete': 
    101             $objDb->sfDeleteRankRecord("dtb_class", "class_id", $_POST['class_id'], "", true); 
    102             $objQuery->delete("dtb_classcategory", "class_id = ?", $_POST['class_id']); 
     105            // パラメータ設定 
     106            $this->lfClassIdParam($objFormParam); 
     107            $objFormParam->setParam($_POST); 
     108            $objFormParam->convParam(); 
     109            // 入力パラメーターチェック 
     110            $this->arrErr = $objFormParam->checkError(); 
     111            if (SC_Utils_Ex::isBlank($this->arrErr)) { 
     112                $class_id = $objFormParam->getValue('class_id'); 
     113            }else{ 
     114                break; 
     115            } 
     116                //規格データの削除処理 
     117            $this->lfDeleteClass($class_id ,$objDb); 
    103118            // 再表示 
    104             $this->objDisplay->reload(); 
     119            SC_Response::reload(); 
    105120            break; 
    106121            // 編集前処理 
    107122        case 'pre_edit': 
    108             // 編集項目をDBより取得する。 
    109             $where = "class_id = ?"; 
    110             $class_name = $objQuery->get("name", "dtb_class", $where, array($_POST['class_id'])); 
     123            // パラメータ設定 
     124            $this->lfClassIdParam($objFormParam); 
     125            $objFormParam->setParam($_POST); 
     126            $objFormParam->convParam(); 
     127            // 入力パラメーターチェック 
     128            $this->arrErr = $objFormParam->checkError(); 
     129            if (SC_Utils_Ex::isBlank($this->arrErr)) { 
     130                $class_id = $objFormParam->getValue('class_id'); 
     131            }else{ 
     132                break; 
     133            } 
     134            // 規格名を取得する。 
     135            $class_name = $this->lfGetClassName($class_id); 
    111136            // 入力項目にカテゴリ名を入力する。 
    112137            $this->arrForm['name'] = $class_name; 
     138 
    113139            // POSTデータを引き継ぐ 
    114             $this->tpl_class_id = $_POST['class_id']; 
     140            $this->tpl_class_id = $class_id; 
    115141            break; 
    116142        case 'down': 
    117             $objDb->sfRankDown("dtb_class", "class_id", $_POST['class_id']); 
     143            // パラメータ設定 
     144            $this->lfClassIdParam($objFormParam); 
     145            $objFormParam->setParam($_POST); 
     146            $objFormParam->convParam(); 
     147            // 入力パラメーターチェック 
     148            $this->arrErr = $objFormParam->checkError(); 
     149            if (SC_Utils_Ex::isBlank($this->arrErr)) { 
     150                $class_id = $objFormParam->getValue('class_id'); 
     151            }else{ 
     152                break; 
     153            } 
     154            $objDb->sfRankDown("dtb_class", "class_id", $class_id); 
    118155            // 再表示 
    119             $this->objDisplay->reload(); 
     156            SC_Response::reload(); 
    120157            break; 
    121158        case 'up': 
    122             $objDb->sfRankUp("dtb_class", "class_id", $_POST['class_id']); 
     159            // パラメータ設定 
     160            $this->lfClassIdParam($objFormParam); 
     161            $objFormParam->setParam($_POST); 
     162            $objFormParam->convParam(); 
     163            // 入力パラメーターチェック 
     164            $this->arrErr = $objFormParam->checkError(); 
     165            if (SC_Utils_Ex::isBlank($this->arrErr)) { 
     166                $class_id = $objFormParam->getValue('class_id'); 
     167            }else{ 
     168                break; 
     169            } 
     170            $objDb->sfRankUp("dtb_class", "class_id", $class_id); 
    123171            // 再表示 
    124             $this->objDisplay->reload(); 
     172            SC_Response::reload(); 
    125173            break; 
    126174        default: 
     
    129177 
    130178        // 規格の読込 
     179        $this->arrClass = $this->lfGetClass(); 
     180        $this->arrClassCatCount = SC_Utils_Ex::sfGetClassCatCount(); 
     181    } 
     182 
     183    /** 
     184     * デストラクタ. 
     185     * 
     186     * @return void 
     187     */ 
     188    function destroy() { 
     189        parent::destroy(); 
     190    } 
     191 
     192    /** 
     193     * パラメータの初期化を行う. 
     194     * 
     195     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     196     * @return void 
     197     */ 
     198    function lfInitParam(&$objFormParam) { 
     199        $objFormParam->addParam("規格名", "name", STEXT_LEN, "a", array("EXIST_CHECK" ,"SPTAB_CHECK" ,"MAX_LENGTH_CHECK")); 
     200        $objFormParam->addParam("規格ID", "class_id", INT_LEN, "n", array("NUM_CHECK")); 
     201    } 
     202 
     203    /** 
     204     * 規格IDの初期化を行う. 
     205     * 
     206     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     207     * @return void 
     208     */ 
     209    function lfClassIdParam(&$objFormParam) { 
     210        $objFormParam->addParam("規格ID", "class_id", INT_LEN, "n", array("NUM_CHECK")); 
     211    } 
     212 
     213   /** 
     214     * 有効な規格情報の取得 
     215     * 
     216     * @param array $objFormParam フォームパラメータークラス 
     217     * @return array 規格情報 
     218     */ 
     219    function lfGetClass($arrData) { 
     220        $objQuery =& SC_Query::getSingletonInstance(); 
     221 
    131222        $where = "del_flg <> 1"; 
    132223        $objQuery->setOrder("rank DESC"); 
    133         $this->arrClass = $objQuery->select("name, class_id", "dtb_class", $where); 
    134         $this->arrClassCatCount = SC_Utils_Ex::sfGetClassCatCount(); 
    135     } 
    136  
    137     /** 
    138      * デストラクタ. 
    139      * 
    140      * @return void 
    141      */ 
    142     function destroy() { 
    143         parent::destroy(); 
    144     } 
    145  
    146     /* DBへの挿入 */ 
    147     function lfInsertClass($arrData) { 
     224        $arrClass = $objQuery->select("name, class_id", "dtb_class", $where); 
     225        return $arrClass; 
     226    } 
     227 
     228   /** 
     229     * 規格名を取得する 
     230     * 
     231     * @param array $arrForm フォームパラメータークラス 
     232     * @return string $class_name 規格名 
     233     */ 
     234    function lfGetClassName($class_id) { 
     235        $objQuery =& SC_Query::getSingletonInstance(); 
     236        $where = "class_id = ?"; 
     237        $class_name = $objQuery->get("name", "dtb_class", $where, array($class_id)); 
     238        return $class_name; 
     239    } 
     240 
     241   /** 
     242     * 規格情報を新規登録 
     243     * 
     244     * @param array $arrForm フォームパラメータークラス 
     245     * @return boolean DB登録結果 成功:True 失敗:false 
     246     */ 
     247    function lfInsertClass($arrForm) { 
    148248        $objQuery =& SC_Query::getSingletonInstance(); 
    149249        // INSERTする値を作成する。 
    150         $sqlval['name'] = $arrData['name']; 
     250        $sqlval['name'] = $arrForm['name']; 
    151251        $sqlval['creator_id'] = $_SESSION['member_id']; 
    152252        $sqlval['rank'] = $objQuery->max("rank", "dtb_class") + 1; 
     
    156256        $sqlval['class_id'] = $objQuery->nextVal('dtb_class_class_id'); 
    157257        $ret = $objQuery->insert("dtb_class", $sqlval); 
    158  
    159258        return $ret; 
    160259    } 
    161260 
    162     /* DBへの更新 */ 
    163     function lfUpdateClass($arrData) { 
     261   /** 
     262     * 規格情報を更新 
     263     * 
     264     * @param array $arrForm フォームパラメータークラス 
     265     * @return boolean DB登録結果 成功:True 失敗:false 
     266     */ 
     267    function lfUpdateClass($arrForm) { 
    164268        $objQuery =& SC_Query::getSingletonInstance(); 
    165269        // UPDATEする値を作成する。 
    166         $sqlval['name'] = $arrData['name']; 
     270        $sqlval['name'] = $arrForm['name']; 
    167271        $sqlval['update_date'] = "Now()"; 
    168272        $where = "class_id = ?"; 
    169273        // UPDATEの実行 
    170         $ret = $objQuery->update("dtb_class", $sqlval, $where, array($arrData['class_id'])); 
     274        $ret = $objQuery->update("dtb_class", $sqlval, $where, array($arrForm['class_id'])); 
    171275        return $ret; 
    172276    } 
    173277 
    174     /* 取得文字列の変換 */ 
    175     function lfConvertParam($array) { 
    176         // 文字変換 
    177         $arrConvList['name'] = "KVa"; 
    178  
    179         foreach ($arrConvList as $key => $val) { 
    180             // POSTされてきた値のみ変換する。 
    181             if(isset($array[$key])) { 
    182                 $array[$key] = mb_convert_kana($array[$key] ,$val); 
    183             } 
     278    /** 
     279     * 規格情報を削除する. 
     280     * 
     281     * @param integer $class_id 規格ID 
     282     * @param SC_Helper_DB $objDb SC_Helper_DBのインスタンス 
     283     * @return boolean 削除結果 成功:True 失敗:false 
     284     */ 
     285    function lfDeleteClass($class_id , &$objDb) { 
     286        $objQuery =& SC_Query::getSingletonInstance(); 
     287 
     288        $objDb->sfDeleteRankRecord("dtb_class", "class_id", $class_id, "", true); 
     289        $where= "class_id = ?"; 
     290        $ret = $objQuery->delete("dtb_classcategory", $where, array($class_id)); 
     291        return $ret; 
     292    } 
     293 
     294   /** 
     295     * エラーチェック 
     296     * 
     297     * @param array $objFormParam フォームパラメータークラス 
     298     * @return array エラー配列 
     299     */ 
     300    function lfCheckError(&$objFormParam) { 
     301        $objQuery =& SC_Query::getSingletonInstance(); 
     302        // パラメーターの基本チェック 
     303        $arrErr = $objFormParam->checkError(); 
     304        if (!SC_Utils_Ex::isBlank($arrErr)) { 
     305            return $arrErr; 
     306        }else{ 
     307            $arrForm = $objFormParam->getHashArray(); 
    184308        } 
    185         return $array; 
    186     } 
    187  
    188     /* 入力エラーチェック */ 
    189     function lfErrorCheck() { 
    190         $objErr = new SC_CheckError(); 
    191         $objErr->doFunc(array("規格名", "name", STEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); 
    192  
    193         if(!isset($objErr->arrErr['name'])) { 
    194             $objQuery =& SC_Query::getSingletonInstance(); 
    195             $arrRet = $objQuery->select("class_id, name", "dtb_class", "del_flg = 0 AND name = ?", array($_POST['name'])); 
    196             // 編集中のレコード以外に同じ名称が存在する場合 
    197             if ($arrRet[0]['class_id'] != $_POST['class_id'] && $arrRet[0]['name'] == $_POST['name']) { 
    198                 $objErr->arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br>"; 
    199             } 
     309 
     310        $where = "del_flg = 0 AND name = ?"; 
     311        $arrClass = $objQuery->select("class_id, name", "dtb_class", $where, array($arrForm['name'])); 
     312        // 編集中のレコード以外に同じ名称が存在する場合 
     313        if ($arrClass[0]['class_id'] != $arrForm['class_id'] && $arrClass[0]['name'] == $arrForm['name']) { 
     314            $arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br>"; 
    200315        } 
    201         return $objErr->arrErr; 
    202     } 
     316        return $arrErr; 
     317    } 
     318 
     319    /** 
     320     * 新規規格追加かどうかを判定する. 
     321     * 
     322     * @param string $arrForm フォームの入力値 
     323     * @return boolean 新規商品追加の場合 true 
     324     */ 
     325    function lfCheckInsert($arrForm) { 
     326        //class_id のあるなしで新規商品かどうかを判定 
     327        if (empty($arrForm['class_id'])){ 
     328            return true; 
     329        }else{ 
     330            return false; 
     331        } 
     332    } 
     333 
    203334} 
    204335?> 
Note: See TracChangeset for help on using the changeset viewer.