Changeset 20220


Ignore:
Timestamp:
2011/02/20 01:55:13 (13 years ago)
Author:
homan
Message:

#1014 リファクタリング. [管理画面]商品管理(メーカー)

Location:
branches/version-2_5-dev/data
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_5-dev/data/Smarty/templates/admin/products/maker.tpl

    r20116 r20220  
    3131                <th>メーカー名<span class="attention"> *</span></th> 
    3232                <td> 
     33                    <!--{if $arrErr.maker_id}--><span class="attention"><!--{$arrErr.maker_id}--></span><br /><!--{/if}--> 
    3334                    <!--{if $arrErr.name}--><span class="attention"><!--{$arrErr.name}--></span><!--{/if}--> 
    3435                    <input type="text" name="name" value="<!--{$arrForm.name|h}-->" maxlength="<!--{$smarty.const.SMTEXT_LEN}-->" style="" size="60" class="box60"/> 
  • branches/version-2_5-dev/data/class/pages/admin/products/LC_Page_Admin_Products_Maker.php

    r20116 r20220  
    6767     */ 
    6868    function action() { 
    69         $objSess = new SC_Session(); 
    70         $objQuery = new SC_Query(); 
    71         $objDb = new SC_Helper_DB_Ex(); 
    72  
    73         // 認証可否の判定 
    74         SC_Utils_Ex::sfIsSuccess($objSess); 
    75  
    76         // 要求判定 
     69 
     70        // 認証可否の判定. 
     71        SC_Utils_Ex::sfIsSuccess(new SC_Session()); 
     72 
     73        // POST値の引き継ぎ 
     74        $this->arrForm = $_POST; 
     75 
     76        // 入力文字の変換 
     77        $this->arrForm = $this->lfConvertParam($this->arrForm); 
     78 
     79        // モードによる処理切り替え. 
    7780        switch($this->getMode()) { 
    78         // 編集処理 
     81 
     82        // 編集処理. 
    7983        case 'edit': 
    80             // POST値の引き継ぎ 
    81             $this->arrForm = $_POST; 
    82             // 入力文字の変換 
    83             $this->arrForm = $this->lfConvertParam($this->arrForm); 
    84  
    8584            // エラーチェック 
    86             $this->arrErr = $this->lfErrorCheck(); 
     85            $this->arrErr = $this->lfErrorCheck($this->arrForm); 
    8786            if(count($this->arrErr) <= 0) { 
    88                 if($_POST['maker_id'] == "") { 
    89                     $this->lfInsertClass($this->arrForm);   // 新規作成 
     87                if($this->arrForm['maker_id'] == "") { 
     88                    // メーカー情報新規登録. 
     89                    $this->lfInsert($this->arrForm); 
    9090                } else { 
    91                     $this->lfUpdateClass($this->arrForm);   // 既存編集 
     91                    // メーカー情報編集. 
     92                    $this->lfUpdate($this->arrForm); 
    9293                } 
    93                 // 再表示 
     94                // 再表示. 
    9495                $this->objDisplay->reload(); 
    9596            } else { 
    9697                // POSTデータを引き継ぐ 
    97                 $this->tpl_maker_id = $_POST['maker_id']; 
     98                $this->tpl_maker_id = $this->arrForm['maker_id']; 
    9899            } 
    99100            break; 
    100         // 削除 
    101         case 'delete': 
    102             $objDb->sfDeleteRankRecord("dtb_maker", "maker_id", $_POST['maker_id'], "", true); 
    103             // 再表示 
    104             $this->objDisplay->reload(); 
    105             break; 
     101 
    106102        // 編集前処理 
    107103        case 'pre_edit': 
    108             // 編集項目をDBより取得する。 
    109             $where = "maker_id = ?"; 
    110             $arrRet = $objQuery->select("name", "dtb_maker", $where, array($_POST['maker_id'])); 
    111             // 入力項目にカテゴリ名を入力する。 
    112             $this->arrForm['name'] = $arrRet[0]['name']; 
    113             // POSTデータを引き継ぐ 
    114             $this->tpl_maker_id = $_POST['maker_id']; 
    115         break; 
     104            $this->arrForm = $this->lfPreEdit($this->arrForm, $this->arrForm['maker_id']); 
     105            $this->tpl_maker_id = $this->arrForm['maker_id']; 
     106            break; 
     107 
     108        case 'up': 
    116109        case 'down': 
    117             $objDb->sfRankDown("dtb_maker", "maker_id", $_POST['maker_id']); 
    118             // 再表示 
    119             $this->objDisplay->reload(); 
    120             break; 
    121         case 'up': 
    122             $objDb->sfRankUp("dtb_maker", "maker_id", $_POST['maker_id']); 
    123             // 再表示 
    124             $this->objDisplay->reload(); 
    125             break; 
     110            // メーカー順変更 
     111            $this->lfRankChange($this->arrForm['maker_id'], $this->getMode()); 
     112            break; 
     113 
     114        // 削除. 
     115        case 'delete': 
     116            $this->lfDelete($this->arrForm['maker_id']); 
     117            break; 
     118 
    126119        default: 
    127120            break; 
    128121        } 
    129122 
    130         // 規格の読込 
    131         $where = "del_flg <> 1"; 
    132         $objQuery->setOrder("rank DESC"); 
    133         $this->arrMaker = $objQuery->select("maker_id, name", "dtb_maker", $where); 
     123        // メーカー情報読み込み 
     124        $this->arrMaker = $this->lfDisp(); 
     125 
    134126    } 
    135127 
     
    143135    } 
    144136 
    145     /* DBへの挿入 */ 
    146     function lfInsertClass($arrData) { 
    147         $objQuery = new SC_Query(); 
    148         // INSERTする値を作成する。 
    149         $sqlval['name'] = $arrData['name']; 
     137 
     138    /** 
     139     * メーカー情報表示 
     140     * 
     141     * @return array @arrMaker メーカー情報 
     142     */ 
     143    function lfDisp() { 
     144        $objQuery =& SC_Query::getSingletonInstance(); 
     145 
     146        // 削除されていないメーカー情報を表示する. 
     147        $where = "del_flg = 0"; 
     148        $objQuery->setOrder("rank DESC"); 
     149        $arrMaker = array(); 
     150        $arrMaker = $objQuery->select("maker_id, name", "dtb_maker", $where); 
     151        return $arrMaker; 
     152    } 
     153 
     154    /** 
     155     * メーカー情報新規登録 
     156     * 
     157     * @return void 
     158     */ 
     159    function lfInsert($arrForm) { 
     160        $objQuery =& SC_Query::getSingletonInstance(); 
     161 
     162        // INSERTする値を作成する 
     163        $sqlval['name'] = $arrForm['name']; 
    150164        $sqlval['rank'] = $objQuery->max("rank", "dtb_maker") + 1; 
    151165        $sqlval['creator_id'] = $_SESSION['member_id']; 
    152166        $sqlval['update_date'] = "Now()"; 
    153167        $sqlval['create_date'] = "Now()"; 
     168        $sqlval['maker_id'] = $objQuery->nextVal('dtb_maker_maker_id'); 
     169 
    154170        // INSERTの実行 
    155         $sqlval['maker_id'] = $objQuery->nextVal('dtb_maker_maker_id'); 
    156         $ret = $objQuery->insert("dtb_maker", $sqlval); 
    157         return $ret; 
    158     } 
    159  
    160     /* DBへの更新 */ 
    161     function lfUpdateClass($arrData) { 
    162         $objQuery = new SC_Query(); 
    163         // UPDATEする値を作成する。 
    164         $sqlval['name'] = $arrData['name']; 
     171        $objQuery->insert("dtb_maker", $sqlval); 
     172    } 
     173 
     174    /** 
     175     * メーカー情報更新 
     176     * 
     177     * @return void 
     178     */ 
     179    function lfUpdate($arrForm) { 
     180        $objQuery =& SC_Query::getSingletonInstance(); 
     181 
     182        // UPDATEする値を作成する. 
     183        $sqlval['name'] = $arrForm['name']; 
    165184        $sqlval['update_date'] = "Now()"; 
    166185        $where = "maker_id = ?"; 
    167         // UPDATEの実行 
    168         $ret = $objQuery->update("dtb_maker", $sqlval, $where, array($_POST['maker_id'])); 
    169         return $ret; 
    170     } 
    171  
    172     /* 取得文字列の変換 */ 
    173     function lfConvertParam($array) { 
     186 
     187        // UPDATEの実行. 
     188        $objQuery->update("dtb_maker", $sqlval, $where, array($arrForm['maker_id'])); 
     189    } 
     190 
     191    /** 
     192     * メーカー情報削除 
     193     * 
     194     * @param integer $maker_id メーカーID 
     195     * @return void 
     196     */ 
     197    function lfDelete($maker_id) { 
     198        $objDb = new SC_Helper_DB_Ex(); 
     199        $objDb->sfDeleteRankRecord("dtb_maker", "maker_id", $maker_id, "", true); 
     200 
     201        // 再表示 
     202        $this->objDisplay->reload(); 
     203    } 
     204 
     205    /** 
     206     * メーカー情報順番変更 
     207     * 
     208     * @param  integer $maker_id メーカーID 
     209     * @param  string  $mode up か down のモードを示す文字列 
     210     * @return void 
     211     */ 
     212    function lfRankChange($maker_id, $mode) { 
     213        $objDb = new SC_Helper_DB_Ex(); 
     214         
     215        switch($mode) { 
     216        case 'up': 
     217            $objDb->sfRankUp("dtb_maker", "maker_id", $maker_id); 
     218            break; 
     219 
     220        case 'down': 
     221            $objDb->sfRankDown("dtb_maker", "maker_id", $maker_id); 
     222            break; 
     223        } 
     224 
     225        // 再表示 
     226        $this->objDisplay->reload(); 
     227    } 
     228 
     229 
     230    /** 
     231     * メーカー情報編集前処理 
     232     * 
     233     * @param array   $arrForm 
     234     * @param integer $maker_id メーカーID 
     235     * @return array  $arrForm メーカー名を追加 
     236     */ 
     237    function lfPreEdit(&$arrForm, $maker_id) { 
     238        $objQuery =& SC_Query::getSingletonInstance(); 
     239 
     240        // 編集項目を取得する 
     241        $where = "maker_id = ?"; 
     242        $arrMaker = array(); 
     243        $arrMaker = $objQuery->select("name", "dtb_maker", $where, array($maker_id)); 
     244        $arrForm['name'] = $arrMaker[0]['name']; 
     245 
     246        return $arrForm; 
     247    } 
     248 
     249    /** 
     250     * 取得文字列の変換 
     251     * 
     252     * @param  array $arrForm 変換前 
     253     * @return array $arrForm 変換後 
     254     */ 
     255    function lfConvertParam($arrForm) { 
    174256        // 文字変換 
     257        $arrConvList['maker_id'] = "n"; 
    175258        $arrConvList['name'] = "KVa"; 
    176259 
    177260        foreach ($arrConvList as $key => $val) { 
    178             // POSTされてきた値のみ変換する 
    179             if(isset($array[$key])) { 
    180                 $array[$key] = mb_convert_kana($array[$key] ,$val); 
     261            // POSTされてきた値のみ変換する 
     262            if(isset($arrForm[$key])) { 
     263                $arrForm[$key] = mb_convert_kana($arrForm[$key] ,$val); 
    181264            } 
    182265        } 
    183         return $array; 
    184     } 
    185  
    186     /* 入力エラーチェック */ 
    187     function lfErrorCheck() { 
    188         $objErr = new SC_CheckError(); 
     266        return $arrForm; 
     267    } 
     268 
     269    /** 
     270     * 入力エラーチェック 
     271     * 
     272     * @param  array $arrForm 
     273     * @return array $objErr->arrErr エラー内容 
     274     */ 
     275    function lfErrorCheck($arrForm) { 
     276        $objErr = new SC_CheckError($arrForm); 
    189277        $objErr->doFunc(array("メーカー名", "name", SMTEXT_LEN), array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK")); 
     278 
     279        // maker_id の正当性チェック 
     280        if(!empty($arrForm['maker_id'])) { 
     281            $objDb = new SC_Helper_DB_Ex(); 
     282            if(!SC_Utils_Ex::sfIsInt($arrForm['maker_id'])  
     283              || SC_Utils_Ex::sfIsZeroFilling($arrForm['maker_id']) 
     284              || !$objDb->sfIsRecord('dtb_maker', 'maker_id', array($arrForm['maker_id']))) { 
     285 
     286              // maker_idが指定されていて、且つその値が不正と思われる場合はエラー. 
     287              $objErr->arrErr['maker_id'] = "※ メーカーIDが不正です<br />"; 
     288            } 
     289        } 
    190290        if(!isset($objErr->arrErr['name'])) { 
    191             $objQuery = new SC_Query(); 
    192             $arrRet = $objQuery->select("maker_id, name", "dtb_maker", "del_flg = 0 AND name = ?", array($_POST['name'])); 
     291            $objQuery =& SC_Query::getSingletonInstance(); 
     292            $arrMaker = array(); 
     293            $arrMaker = $objQuery->select("maker_id, name", "dtb_maker", "del_flg = 0 AND name = ?", array($arrForm['name'])); 
     294 
    193295            // 編集中のレコード以外に同じ名称が存在する場合 
    194             if ($arrRet[0]['maker_id'] != $_POST['maker_id'] && $arrRet[0]['name'] == $_POST['name']) { 
    195                 $objErr->arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br>"; 
     296            if ($arrMaker[0]['maker_id'] != $arrForm['maker_id'] && $arrMaker[0]['name'] == $arrForm['name']) { 
     297                $objErr->arrErr['name'] = "※ 既に同じ内容の登録が存在します。<br />"; 
    196298            } 
    197299        } 
     300 
    198301        return $objErr->arrErr; 
    199302    } 
Note: See TracChangeset for help on using the changeset viewer.