Ignore:
Timestamp:
2012/01/17 16:21:07 (12 years ago)
Author:
Seasoft
Message:

2.12系へマイルストーン変更となったチケット分を差し戻し
r21357 #1324
r21356 #1324,#1565
r21355 #1431
r21354 #1555
r21353 #1563
r21352 #1431
r21351 #1538
r21350 #1560

File:
1 edited

Legend:

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

    r21402 r21405  
    8282        // カテゴリ登録/編集実行 
    8383        case 'edit': 
    84             $this->doEdit($objFormParam); 
     84            $category_id = $objFormParam->getValue('category_id'); 
     85            if ($category_id == '') { 
     86                $this->doRegister($objFormParam); 
     87            } else { 
     88                $this->doEdit($objFormParam); 
     89            } 
    8590            break; 
    8691        // 入力ボックスへ編集対象のカテゴリ名をセット 
     
    100105            $this->doDown($objFormParam); 
    101106            break; 
    102         // FIXME r19909 によってテンプレートが削除されている 
     107        // XXX 使われていないコード? 
    103108        case 'moveByDnD': 
    104109            // DnDしたカテゴリと移動先のセットを分解する 
     
    236241        // 編集対象のカテゴリ名をDBより取得する 
    237242        $where = "category_id = ?"; 
    238         $arrRes = $objQuery->getRow("*", "dtb_category", $where, array($category_id)); 
    239  
    240         $objFormParam->setParam($arrRes); 
    241  
    242         $this->arrForm = $objFormParam->getHashArray(); 
    243     } 
    244  
    245     /** 
    246      * カテゴリの登録・編集を実行する. 
    247      * 
    248      * 下記の場合は, 登録・編集を実行せず、エラーメッセージを表示する 
     243        $category_name = $objQuery->get("category_name", "dtb_category", $where, array($category_id)); 
     244 
     245        // 入力ボックスへカテゴリ名を保持する. 
     246        $this->arrForm['category_name'] = $category_name; 
     247        // カテゴリIDを保持する. 
     248        $this->arrForm['category_id']   = $category_id; 
     249    } 
     250 
     251    /** 
     252     * カテゴリの編集を実行する. 
     253     * 
     254     * 下記の場合は, 編集を実行せず、エラーメッセージを表示する 
    249255     * 
    250256     * - カテゴリ名がすでに使用されている場合 
    251      * - 階層登録数の上限を超える場合 (登録時のみ評価) 
    252      * - カテゴリ名がすでに使用されている場合 (登録時のみ評価) 
    253257     * 
    254258     * @param SC_FormParam $objFormParam 
     
    256260     */ 
    257261    function doEdit(&$objFormParam) { 
    258         $category_id = $objFormParam->getValue('category_id'); 
    259  
    260         // 追加か 
    261         $add = strlen($category_id) === 0; 
    262  
    263         // エラーチェック 
    264         $this->arrErr = $this->checkError($objFormParam, $add); 
    265  
    266         // エラーがない場合、追加・更新処理 
    267         if (empty($this->arrErr)) { 
    268             $arrCategory = $objFormParam->getDbArray(); 
    269  
    270             // 追加 
    271             if ($add) { 
    272                 $this->registerCategory($arrCategory); 
    273             } 
    274             // 更新 
    275             else { 
    276                 unset($arrCategory['category_id']); 
    277                 $this->updateCategory($category_id, $arrCategory); 
    278             } 
    279         } 
    280         // エラーがある場合、入力値の再表示 
    281         else { 
    282             $this->arrForm = $objFormParam->getHashArray(); 
    283         } 
    284     } 
    285  
    286     /** 
    287      * エラーチェック 
    288      * 
    289      * @param SC_FormParam $objFormParam 
    290      * @param boolean $add 追加か 
    291      * @return void 
    292      */ 
    293     function checkError(&$objFormParam, $add) { 
    294         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    295  
    296262        // 入力項目チェック 
    297263        $arrErr = $objFormParam->checkError(); 
    298         if (!empty($arrErr)) { 
    299             return $arrErr; 
    300         } 
    301  
    302         $category_id = $objFormParam->getValue('category_id'); 
    303         $parent_category_id = $objFormParam->getValue('parent_category_id'); 
    304         $category_name = $objFormParam->getValue('category_name'); 
    305  
    306         // 追加の場合に固有のチェック 
    307         if ($add) { 
    308             // 登録数上限チェック 
    309             $where = "del_flg = 0"; 
    310             $count = $objQuery->count("dtb_category", $where); 
    311             if ($count >= CATEGORY_MAX) { 
    312                 $arrErr['category_name'] = "※ カテゴリの登録最大数を超えました。<br/>"; 
    313                 return $arrErr; 
    314             } 
    315  
    316             // 階層上限チェック 
    317             if ($this->isOverLevel($parent_category_id)) { 
    318                 $arrErr['category_name'] = "※ " . LEVEL_MAX . "階層以上の登録はできません。<br/>"; 
    319                 return $arrErr; 
    320             } 
     264        if (count($arrErr) > 0) { 
     265            $this->arrErr = $arrErr; 
     266            $this->arrForm['category_id']   = $objFormParam->getValue('category_id'); 
     267            $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 
     268            return; 
    321269        } 
    322270 
    323271        // 重複チェック 
    324         $arrWhereVal = array(); 
    325         $where = 'del_flg = 0 AND parent_category_id = ? AND category_name = ?'; 
    326         $arrWhereVal[] = $parent_category_id; 
    327         $arrWhereVal[] = $category_name; 
    328         // 更新の場合、抽出対象から自己を除外する 
    329         if (!$add) { 
    330             $where .= ' AND category_id <> ?'; 
    331             $arrWhereVal[] = $category_id; 
    332         } 
    333         $count = $objQuery->count('dtb_category', $where, $arrWhereVal); 
     272        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     273        $where = "parent_category_id = ? AND category_id <> ? AND category_name = ?"; 
     274        $count = $objQuery->count("dtb_category", 
     275                                  $where, 
     276                                  array($objFormParam->getValue('parent_category_id'), 
     277                                        $objFormParam->getValue('category_id'), 
     278                                        $objFormParam->getValue('category_name'))); 
    334279        if ($count > 0) { 
    335             $arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。<br/>"; 
    336             return $arrErr; 
    337         } 
    338  
    339         return $arrErr; 
     280            $this->arrErr['category_name']  = "※ 既に同じ内容の登録が存在します。<br/>"; 
     281            $this->arrForm['category_id']   = $objFormParam->getValue('category_id'); 
     282            $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 
     283            return; 
     284        } 
     285 
     286        // カテゴリ更新 
     287        $arrCategory = array(); 
     288        $arrCategory['category_name'] = $objFormParam->getValue('category_name'); 
     289        $arrCategory['update_date']   = 'CURRENT_TIMESTAMP'; 
     290        $this->updateCategory($objFormParam->getValue('category_id'), $arrCategory); 
     291    } 
     292 
     293    /** 
     294     * カテゴリの登録を実行する. 
     295     * 
     296     * 下記の場合は, 登録を実行せず、エラーメッセージを表示する 
     297     * 
     298     * - カテゴリ登録数の上限を超える場合 
     299     * - 階層登録数の上限を超える場合 
     300     * - カテゴリ名がすでに使用されている場合 
     301     * 
     302     * @param SC_FormParam $objFormParam 
     303     * @return void 
     304     */ 
     305    function doRegister(&$objFormParam) { 
     306        // 入力項目チェック 
     307        $arrErr = $objFormParam->checkError(); 
     308        if (count($arrErr) > 0) { 
     309            $this->arrErr = $arrErr; 
     310            $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 
     311            return; 
     312        } 
     313 
     314        // 登録数上限チェック 
     315        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     316        $where = "del_flg = 0"; 
     317        $count = $objQuery->count("dtb_category", $where); 
     318        if ($count >= CATEGORY_MAX) { 
     319            $this->arrErr['category_name']  = "※ カテゴリの登録最大数を超えました。<br/>"; 
     320            $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 
     321            return; 
     322        } 
     323 
     324        // 階層上限チェック 
     325        if ($this->isOverLevel($objFormParam->getValue('parent_category_id'))) { 
     326            $this->arrErr['category_name']  = "※ " . LEVEL_MAX . "階層以上の登録はできません。<br/>"; 
     327            $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 
     328            return; 
     329        } 
     330 
     331        // 重複チェック 
     332        $where = "parent_category_id = ? AND category_name = ?"; 
     333        $count = $objQuery->count("dtb_category", 
     334                                  $where, 
     335                                  array($objFormParam->getValue('parent_category_id'), 
     336                                        $objFormParam->getValue('category_name'))); 
     337        if ($count > 0) { 
     338            $this->arrErr['category_name']  = "※ 既に同じ内容の登録が存在します。<br/>"; 
     339            $this->arrForm['category_name'] = $objFormParam->getValue('category_name'); 
     340            return; 
     341        } 
     342 
     343        // カテゴリ登録 
     344        $this->registerCategory($objFormParam->getValue('parent_category_id'), 
     345                                $objFormParam->getValue('category_name'), 
     346                                $_SESSION['member_id']); 
    340347    } 
    341348 
     
    430437     * カテゴリを更新する 
    431438     * 
    432      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
     439     * @param integer $category_id 更新対象のカテゴリID 
     440     * @param array 更新する カラム名 => 値 の連想配列 
    433441     * @return void 
    434442     */ 
    435443    function updateCategory($category_id, $arrCategory) { 
    436444        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    437  
    438         $arrCategory['update_date']   = 'CURRENT_TIMESTAMP'; 
    439  
    440445        $objQuery->begin(); 
    441446        $where = "category_id = ?"; 
     
    447452     * カテゴリを登録する 
    448453     * 
    449      * @param SC_FormParam $objFormParam SC_FormParam インスタンス 
    450      * @return void 
    451      */ 
    452     function registerCategory($arrCategory) { 
    453         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    454  
    455         $parent_category_id = $arrCategory['parent_category_id']; 
    456  
     454     * @param integer 親カテゴリID 
     455     * @param string カテゴリ名 
     456     * @param integer 作成者のID 
     457     * @return void 
     458     */ 
     459    function registerCategory($parent_category_id, $category_name, $creator_id) { 
     460        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    457461        $objQuery->begin(); 
    458462 
     
    475479        $level = $objQuery->get('level', "dtb_category", $where, array($parent_category_id)) + 1; 
    476480 
     481        $arrCategory = array(); 
     482        $arrCategory['category_name'] = $category_name; 
     483        $arrCategory['parent_category_id'] = $parent_category_id; 
    477484        $arrCategory['create_date'] = 'CURRENT_TIMESTAMP'; 
    478485        $arrCategory['update_date'] = 'CURRENT_TIMESTAMP'; 
    479         $arrCategory['creator_id']  = $_SESSION['member_id']; 
     486        $arrCategory['creator_id']  = $creator_id; 
    480487        $arrCategory['rank']        = $rank; 
    481488        $arrCategory['level']       = $level; 
    482489        $arrCategory['category_id'] = $objQuery->nextVal('dtb_category_category_id'); 
    483  
    484490        $objQuery->insert("dtb_category", $arrCategory); 
    485491 
Note: See TracChangeset for help on using the changeset viewer.