Ignore:
Timestamp:
2009/12/07 15:08:06 (14 years ago)
Author:
kajiwara
Message:

EC-CUBE Ver2.4.2 分コミット。詳細はこちら( http://www.ec-cube.net/release/detail.php?release_id=207

File:
1 edited

Legend:

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

    r17048 r18432  
    108108                    // レコード数を得る 
    109109                    $rec_count = $this->lfCSVRecordCount($enc_filepath); 
     110                    if ($rec_count === false) { 
     111                        $err = false; 
     112                        $arrErr['bad_file_pointer'] = "※ 不正なファイルポインタが検出されました"; 
     113                    } 
    110114 
    111115                    $fp = fopen($enc_filepath, "r"); 
     
    161165 
    162166                        if (!$err) { 
    163                             $this->lfRegistProduct($objQuery, $line); 
     167                            $this->lfRegistProduct($objQuery, $rec_count, $line); 
    164168                            $regist++; 
    165169                        } 
     
    225229        $this->objFormParam->addParam("親カテゴリID","parent_category_id",INT_LEN,"n",array("MAX_LENGTH_CHECK","NUM_CHECK")); 
    226230    } 
    227      
     231 
    228232    /** 
    229233     * カテゴリ登録を行う. 
    230234     * 
    231235     * @param SC_Query $objQuery SC_Queryインスタンス 
    232      * @param string|integer $line 処理中の行数 
    233      * @return void 
    234      */ 
    235     function lfRegistProduct($objQuery, $line = "") { 
     236     * @param string|integer $rec_count 処理総数|integer $line 処理中の行数 
     237     * @return void 
     238     */ 
     239    function lfRegistProduct($objQuery, $rec_count, $line = "") { 
    236240        $objDb = new SC_Helper_DB_Ex(); 
    237241        $arrRet = $this->objFormParam->getHashArray(); 
    238          
     242 
    239243        //カテゴリID 
    240244        if ($arrRet['category_id'] == 0) { 
     
    246250            $update = true; 
    247251        } 
    248          
     252 
    249253        // カテゴリ名 
    250254        $sqlval['category_name'] = $arrRet['category_name']; 
     255        //表示ランク(上から順に表示順を自動割り当て) 
     256        $sqlval['rank'] = ($rec_count + 1) - $line ; 
    251257 
    252258        // 親カテゴリID、レベル 
     
    259265            $sqlval['level'] = $parent_level + 1; 
    260266        } 
    261          
     267 
    262268        // その他 
    263269        $time = date("Y-m-d H:i:s"); 
     
    268274        $sqlval['update_date'] = $time; 
    269275        $sqlval['creator_id'] = $_SESSION['member_id']; 
    270          
     276 
    271277        // 更新 
    272278        if ($update) { 
     
    274280            $where = "category_id = ?"; 
    275281            $objQuery->update("dtb_category", $sqlval, $where, array($sqlval['category_id'])); 
    276          
     282 
    277283        // 新規登録 
    278284        } else { 
    279285            echo "INSERT "; 
    280286            $sqlval['create_date'] = $time; 
    281             // ランク 
    282             if ($sqlval['parent_category_id'] == 0) { 
    283                 // ROOT階層で最大のランクを取得する。 
    284                 $where = "parent_category_id = ?"; 
    285                 $sqlval['rank'] = $objQuery->max("dtb_category", "rank", $where, array($sqlval['parent_category_id'])) + 1; 
    286             } else { 
    287                 // 親のランクを自分のランクとする。 
    288                 $where = "category_id = ?"; 
    289                 $sqlval['rank'] = $objQuery->get("dtb_category", "rank", $where, array($sqlval['parent_category_id'])); 
    290                 // 追加レコードのランク以上のレコードを一つあげる。 
    291                 $sqlup = "UPDATE dtb_category SET rank = (rank + 1) WHERE rank >= ?"; 
    292                 $objQuery->exec($sqlup, array($sqlval['rank'])); 
    293             } 
    294287            $objQuery->insert("dtb_category", $sqlval); 
    295288        } 
     
    306299        $objErr = new SC_CheckError($arrRet); 
    307300        $objErr->arrErr = $this->objFormParam->checkError(false); 
    308          
     301 
    309302        // 親カテゴリID設定 
    310303        if ($arrRet['parent_category_id'] == 0) { 
     
    313306            $parent_category_id = $arrRet['parent_category_id']; 
    314307        } 
    315          
     308 
    316309        // 存在する親カテゴリIDかチェック 
    317310        if (count($objErr->arrErr) == 0) { 
     
    323316            } 
    324317        } 
    325          
     318 
    326319        // 階層チェック 
    327320        if (!isset($objErr->arrErr['category_name']) && !isset($objErr->arrErr['parent_category_id'])) { 
     
    338331            if (empty($arrCat)) { 
    339332                $arrCat = array(array("category_id" => "", "category_name" => "")); 
     333            // 編集中のレコード以外に同じ名称が存在する場合 
     334            }elseif ($arrCat[0]['category_id'] != $arrRet['category_id'] && $arrCat[0]['category_name'] == $arrRet['category_name']) { 
     335                $objErr->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。\n"; 
    340336            } 
    341             // 編集中のレコード以外に同じ名称が存在する場合 
    342             if ($arrCat[0]['category_id'] != $arrRet['category_id'] && $arrCat[0]['category_name'] == $_POST['category_name']) { 
    343                 $objErr->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。<br>"; 
    344             } 
    345337        } 
    346338        return $objErr->arrErr; 
     
    351343     * 
    352344     * @param string $file_name ファイルパス 
    353      * @return integer CSV のカウント数 
     345     * @return mixed CSV のカウント数; $file_name が無効な場合は false 
    354346     */ 
    355347    function lfCSVRecordCount($file_name) { 
    356348        $count = 0; 
    357349        $fp = fopen($file_name, "r"); 
    358         while(!feof($fp)) { 
    359             $arrCSV = fgetcsv($fp, CSV_LINE_MAX); 
    360             $count++; 
    361         } 
    362  
     350        if ($fp !== false) { 
     351            while(!feof($fp)) { 
     352                $arrCSV = fgetcsv($fp, CSV_LINE_MAX); 
     353                $count++; 
     354            } 
     355        } else { 
     356            return false; 
     357        } 
    363358        return $count-1; 
    364359    } 
Note: See TracChangeset for help on using the changeset viewer.