Changeset 20182


Ignore:
Timestamp:
2011/02/17 19:53:51 (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_ClassCategory.php

    r20116 r20182  
    6767     */ 
    6868    function action() { 
    69         $objQuery = new SC_Query(); 
    70         $objDb = new SC_Helper_DB_Ex(); 
     69        $objFormParam = new SC_FormParam(); 
    7170 
    7271        // 認証可否の判定 
    73         $objSess = new SC_Session(); 
    74         SC_Utils_Ex::sfIsSuccess($objSess); 
    75  
    76         $get_check = false; 
    77  
    78         // 規格IDのチェック 
    79         if(SC_Utils_Ex::sfIsInt($_GET['class_id'])) { 
    80             // 規格名の取得 
    81             $this->tpl_class_name = $objQuery->get("name", "dtb_class", "class_id = ?", array($_GET['class_id'])); 
    82             if($this->tpl_class_name != "") { 
    83                 // 規格IDの引き継ぎ 
    84                 $this->arrHidden['class_id'] = $_GET['class_id']; 
    85                 $get_check = true; 
    86             } 
    87         } 
    88  
    89         if(!$get_check) { 
    90             // 規格登録ページに飛ばす。 
    91             SC_Response_Ex::sendRedirect(ADMIN_CLASS_REGIST_URLPATH); 
    92             exit; 
    93         } 
    94  
    95         if (isset($_POST['class_id'])) { 
    96             if (!SC_Utils_Ex::sfIsInt($_POST['class_id'])) { 
    97                 SC_Utils_Ex::sfDispError(""); 
    98             } 
    99         } 
    100  
     72        SC_Utils_Ex::sfIsSuccess(new SC_Session()); 
     73 
     74        $this->lfInitParam($objFormParam); 
     75        $objFormParam->setParam($_POST); 
     76        $objFormParam->setParam($_GET); 
     77        $objFormParam->convParam(); 
     78        $class_id = $objFormParam->getValue('class_id'); 
     79        $classcategory_id = $objFormParam->getValue('classcategory_id'); 
     80 
     81        switch($this->getMode()) { 
     82        // 登録ボタン押下 
    10183        // 新規作成 or 編集 
    102         switch($this->getMode()) { 
    103             // 登録ボタン押下 
    10484        case 'edit': 
    105             // POST値の引き継ぎ 
    106             $this->arrForm = $_POST; 
    107             // 入力文字の変換 
    108             $_POST = $this->lfConvertParam($_POST); 
    109             // エラーチェック 
    110             $this->arrErr = $this->lfErrorCheck(); 
    111             if(count($this->arrErr) <= 0) { 
    112                 if($_POST['classcategory_id'] == "") { 
    113                     $this->lfInsertClass(); // DBへの書き込み 
     85            // パラメータ値の取得 
     86            $this->arrForm = $objFormParam->getHashArray(); 
     87            // 入力パラメーターチェック 
     88            $this->arrErr = $this->lfCheckError($objFormParam); 
     89            if (SC_Utils_Ex::isBlank($this->arrErr)) { 
     90                //新規規格追加かどうかを判定する 
     91                $is_insert = $this->lfCheckInsert($classcategory_id); 
     92                if($is_insert) { 
     93                    //新規追加 
     94                    $this->lfInsertClass($this->arrForm); 
    11495                } else { 
    115                     $this->lfUpdateClass(); // DBへの書き込み 
     96                    //更新 
     97                    $this->lfUpdateClass($this->arrForm); 
    11698                } 
    11799                // 再表示 
    118                 $this->objDisplay->reload($_GET['class_id']); 
    119                 //sfReload("class_id=" . $_GET['class_id']); 
    120             } else { 
    121                 // POSTデータを引き継ぐ 
    122                 $this->tpl_classcategory_id = $_POST['classcategory_id']; 
     100                SC_Response::reload(); 
    123101            } 
    124102            break; 
     
    126104        case 'delete': 
    127105            // ランク付きレコードの削除 
    128             $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']); 
    129             $objDb->sfDeleteRankRecord("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where, true); 
     106            $this->lfDeleteClassCat($class_id, $classcategory_id); 
    130107            break; 
    131108            // 編集前処理 
    132109        case 'pre_edit': 
    133             // 編集項目をDBより取得する。 
    134             $where = "classcategory_id = ?"; 
    135             $name = $objQuery->get("name", "dtb_classcategory", $where, array($_POST['classcategory_id'])); 
     110            // 規格名を取得する。 
     111            $classcategory_name = $this->lfGetClassCatName($classcategory_id); 
    136112            // 入力項目にカテゴリ名を入力する。 
    137             $this->arrForm['name'] = $name; 
    138             // POSTデータを引き継ぐ 
    139             $this->tpl_classcategory_id = $_POST['classcategory_id']; 
     113            $this->arrForm['name'] = $classcategory_name; 
    140114            break; 
    141115        case 'down': 
    142             $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']); 
    143             $objDb->sfRankDown("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where); 
     116            //並び順を下げる 
     117            $this->lfDownRank($class_id, $classcategory_id); 
    144118            break; 
    145119        case 'up': 
    146             $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['class_id']); 
    147             $objDb->sfRankUp("dtb_classcategory", "classcategory_id", $_POST['classcategory_id'], $where); 
     120            //並び順を上げる 
     121            $this->lfUpRank($class_id, $classcategory_id); 
    148122            break; 
    149123        default: 
    150124            break; 
    151125        } 
    152  
    153         // 規格分類の読込 
     126        //規格分類名の取得 
     127        $this->tpl_class_name = $this->lfGetClassName($class_id); 
     128        //規格分類情報の取得 
     129        $this->arrClassCat = $this->lfGetClassCat($class_id); 
     130        // POSTデータを引き継ぐ 
     131        $this->tpl_classcategory_id = $classcategory_id; 
     132    } 
     133 
     134    /** 
     135     * デストラクタ. 
     136     * 
     137     * @return void 
     138     */ 
     139    function destroy() { 
     140        parent::destroy(); 
     141    } 
     142 
     143    /** 
     144     * パラメータの初期化を行う. 
     145     * 
     146     * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     147     * @return void 
     148     */ 
     149    function lfInitParam(&$objFormParam) { 
     150        $objFormParam->addParam("規格ID", "class_id", INT_LEN, "n", array("NUM_CHECK")); 
     151        $objFormParam->addParam("規格分類名", "name", STEXT_LEN, "KVa", array("EXIST_CHECK" ,"SPTAB_CHECK" ,"MAX_LENGTH_CHECK")); 
     152        $objFormParam->addParam("規格分類ID", "classcategory_id", INT_LEN, "n", array("NUM_CHECK")); 
     153    } 
     154 
     155   /** 
     156     * 有効な規格分類情報の取得 
     157     * 
     158     * @param integer $class_id 規格ID 
     159     * @return array 規格分類情報 
     160     */ 
     161    function lfGetClassCat($class_id) { 
     162        $objQuery =& SC_Query::getSingletonInstance(); 
     163 
    154164        $where = "del_flg <> 1 AND class_id = ?"; 
    155165        $objQuery->setOrder("rank DESC"); 
    156         $this->arrClassCat = $objQuery->select("name, classcategory_id", "dtb_classcategory", $where, array($_GET['class_id'])); 
    157     } 
    158  
    159     /** 
    160      * デストラクタ. 
    161      * 
    162      * @return void 
    163      */ 
    164     function destroy() { 
    165         parent::destroy(); 
    166     } 
    167  
    168     /* DBへの挿入 */ 
    169     function lfInsertClass() { 
    170         $objQuery = new SC_Query(); 
     166        $arrClassCat = $objQuery->select("name, classcategory_id", "dtb_classcategory", $where, array($class_id)); 
     167        return $arrClassCat; 
     168    } 
     169 
     170   /** 
     171     * 規格名の取得 
     172     * 
     173     * @param integer $class_id 規格ID 
     174     * @return string 規格名 
     175     */ 
     176    function lfGetClassName($class_id) { 
     177        $objQuery =& SC_Query::getSingletonInstance(); 
     178 
     179        $where = "class_id = ?"; 
     180        $name = $objQuery->get("name", "dtb_class", $where, array($class_id)); 
     181        return $name; 
     182    } 
     183   /** 
     184     * 規格分類名を取得する 
     185     * 
     186     * @param integer $classcategory_id 規格分類ID 
     187     * @return string 規格分類名 
     188     */ 
     189    function lfGetClassCatName($classcategory_id) { 
     190        $objQuery =& SC_Query::getSingletonInstance(); 
     191        $where = "classcategory_id = ?"; 
     192        $name = $objQuery->get("name", "dtb_classcategory", $where, array($classcategory_id)); 
     193        return $name; 
     194    } 
     195 
     196   /** 
     197     * 規格分類情報を新規登録 
     198     * 
     199     * @param array $arrForm フォームパラメータークラス 
     200     * @return integer 更新件数 
     201     */ 
     202    function lfInsertClass($arrForm) { 
     203        $objQuery =& SC_Query::getSingletonInstance(); 
    171204        $objQuery->begin(); 
    172205        // 親規格IDの存在チェック 
    173206        $where = "del_flg <> 1 AND class_id = ?"; 
    174         $ret =  $objQuery->get("class_id", "dtb_class", $where, array($_POST['class_id'])); 
    175         if($ret != "") { 
     207        $class_id = $objQuery->get("class_id", "dtb_class", $where, array($arrForm['class_id'])); 
     208        if(!SC_Utils_Ex::isBlank($class_id)) { 
    176209            // INSERTする値を作成する。 
    177             $sqlval['name'] = $_POST['name']; 
    178             $sqlval['class_id'] = $_POST['class_id']; 
     210            $sqlval['name'] = $arrForm['name']; 
     211            $sqlval['class_id'] = $arrForm['class_id']; 
    179212            $sqlval['creator_id'] = $_SESSION['member_id']; 
    180             $sqlval['rank'] = $objQuery->max("rank", "dtb_classcategory", $where, array($_POST['class_id'])) + 1; 
     213            $sqlval['rank'] = $objQuery->max("rank", "dtb_classcategory", $where, array($arrForm['class_id'])) + 1; 
    181214            $sqlval['create_date'] = "now()"; 
    182215            $sqlval['update_date'] = "now()"; 
     
    201234    } 
    202235 
    203     /* 取得文字列の変換 */ 
    204     function lfConvertParam($array) { 
    205         // 文字変換 
    206         $arrConvList['name'] = "KVa"; 
    207  
    208         foreach ($arrConvList as $key => $val) { 
    209             // POSTされてきた値のみ変換する。 
    210             if(isset($array[$key])) { 
    211                 $array[$key] = mb_convert_kana($array[$key] ,$val); 
    212             } 
    213         } 
    214         return $array; 
    215     } 
    216  
    217     /* 入力エラーチェック */ 
    218     function lfErrorCheck() { 
    219         $objErr = new SC_CheckError(); 
    220         $objErr->doFunc(array("分類名", "name", STEXT_LEN), array("EXIST_CHECK","MAX_LENGTH_CHECK")); 
    221         if(!isset($objErr->arrErr['name'])) { 
    222             $objQuery = new SC_Query(); 
    223             $where = "class_id = ? AND name = ?"; 
    224             $arrRet = $objQuery->select("classcategory_id, name", "dtb_classcategory", $where, array($_GET['class_id'], $_POST['name'])); 
    225             // 編集中のレコード以外に同じ名称が存在する場合 
    226             if ($arrRet[0]['classcategory_id'] != $_POST['classcategory_id'] && $arrRet[0]['name'] == $_POST['name']) { 
    227                 $objErr->arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br>"; 
    228             } 
    229         } 
    230         return $objErr->arrErr; 
     236   /** 
     237     * エラーチェック 
     238     * 
     239     * @param array $objFormParam フォームパラメータークラス 
     240     * @return array エラー配列 
     241     */ 
     242    function lfCheckError(&$objFormParam) { 
     243        $objQuery =& SC_Query::getSingletonInstance(); 
     244        $arrForm = $objFormParam->getHashArray(); 
     245        // パラメーターの基本チェック 
     246        $arrErr = $objFormParam->checkError(); 
     247        if (!SC_Utils_Ex::isBlank($arrErr)) { 
     248            return $arrErr; 
     249        }else{ 
     250            $arrForm = $objFormParam->getHashArray(); 
     251        } 
     252 
     253        $where = "class_id = ? AND name = ?"; 
     254        $arrRet = $objQuery->select("classcategory_id, name", "dtb_classcategory", $where, array($arrForm['class_id'], $arrForm['name'])); 
     255        // 編集中のレコード以外に同じ名称が存在する場合 
     256        if ($arrRet[0]['classcategory_id'] != $arrForm['classcategory_id'] && $arrRet[0]['name'] == $arrForm['name']) { 
     257            $arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br>"; 
     258        } 
     259        return $arrErr; 
     260    } 
     261 
     262    /** 
     263     * 新規規格分類追加かどうかを判定する. 
     264     * 
     265     * @param integer $classcategory_id 規格分類ID 
     266     * @return boolean 新規商品追加の場合 true 
     267     */ 
     268    function lfCheckInsert($classcategory_id) { 
     269        //classcategory_id のあるなしで新規規格分類化かどうかを判定 
     270        if (empty($classcategory_id)){ 
     271            return true; 
     272        }else{ 
     273            return false; 
     274        } 
     275    } 
     276 
     277    /** 
     278     * 規格分類情報を削除する 
     279     * 
     280     * @param integer $class_id 規格ID 
     281     * @param integer $classcategory_id 規格分類ID 
     282     * @return void 
     283     */ 
     284    function lfDeleteClassCat($class_id, $classcategory_id) { 
     285        $objDb = new SC_Helper_DB_Ex(); 
     286        $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($class_id); 
     287        $objDb->sfDeleteRankRecord("dtb_classcategory", "classcategory_id", $classcategory_id, $where, true); 
     288    } 
     289    /** 
     290     * 並び順を上げる 
     291     * 
     292     * @param integer $class_id 規格ID 
     293     * @param integer $classcategory_id 規格分類ID 
     294     * @return void 
     295     */ 
     296    function lfUpRank($class_id, $classcategory_id) { 
     297        $objDb = new SC_Helper_DB_Ex(); 
     298        $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($class_id); 
     299        $objDb->sfRankUp("dtb_classcategory", "classcategory_id", $classcategory_id, $where); 
     300    } 
     301    /** 
     302     * 並び順を下げる 
     303     * 
     304     * @param integer $class_id 規格ID 
     305     * @param integer $classcategory_id 規格分類ID 
     306     * @return void 
     307     */ 
     308    function lfDownRank($class_id, $classcategory_id) { 
     309        $objDb = new SC_Helper_DB_Ex(); 
     310        $where = "class_id = " . SC_Utils_Ex::sfQuoteSmart($class_id); 
     311        $objDb->sfRankDown("dtb_classcategory", "classcategory_id", $classcategory_id, $where); 
    231312    } 
    232313} 
Note: See TracChangeset for help on using the changeset viewer.