Ignore:
Timestamp:
2010/03/11 10:35:11 (14 years ago)
Author:
kajiwara
Message:

正式版にナイトリービルド版をマージしてみるテスト

File:
1 edited

Legend:

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

    r18562 r18609  
    5050        $this->tpl_mainno = 'products'; 
    5151        $this->tpl_subno = 'upload_csv_category'; 
     52        $this->tpl_subtitle = 'カテゴリ登録CSV'; 
    5253    } 
    5354 
     
    123124 
    124125                    echo "■ CSV登録進捗状況 <br/><br/>\n"; 
     126 
    125127                    while (!feof($fp) && !$err) { 
    126128                        $arrCSV = fgetcsv($fp, CSV_LINE_MAX); 
     
    153155                            $this->objFormParam->convParam(); 
    154156                            // <br>なしでエラー取得する。 
    155                             $arrCSVErr = $this->lfCheckError(); 
     157                            $arrCSVErr = $this->lfCheckError($arrCSV); 
    156158                        } 
    157159 
     
    166168 
    167169                        if (!$err) { 
    168                             $this->lfRegistProduct($objQuery, $rec_count, $line); 
     170                            $this->lfRegistProduct($objQuery, $line,$arrCSV); 
    169171                            $regist++; 
    170172                        } 
     
    172174 
    173175                        if (!$err) echo $line." / ".$rec_count. "行目 (カテゴリID:".$arrParam['category_id']." / カテゴリ名:".$arrParam['category_name'].")\n<br />"; 
    174                         flush(); 
     176                        SC_Utils_Ex::sfFlush(); 
    175177                    } 
    176178                    fclose($fp); 
     
    181183                        // カテゴリ件数カウント関数の実行 
    182184                        $objDb->sfCategory_Count($objQuery); 
     185                        $objDb->sfMaker_Count($objQuery); 
    183186                    } else { 
    184187                        $objQuery->rollback(); 
     
    190193                } 
    191194                echo "<br/><a href=\"javascript:window.close()\">→閉じる</a>"; 
    192                 flush(); 
    193195                exit; 
     196            default: 
    194197                break; 
    195         default: 
    196             break; 
    197198        } 
    198199 
     
    230231        $this->objFormParam->addParam("親カテゴリID","parent_category_id",INT_LEN,"n",array("MAX_LENGTH_CHECK","NUM_CHECK")); 
    231232    } 
    232  
     233     
    233234    /** 
    234235     * カテゴリ登録を行う. 
    235236     * 
    236237     * @param SC_Query $objQuery SC_Queryインスタンス 
    237      * @param string|integer $rec_count 処理総数|integer $line 処理中の行数 
    238      * @return void 
    239      */ 
    240     function lfRegistProduct($objQuery, $rec_count, $line = "") { 
     238     * @param string|integer $line 処理中の行数 
     239     * @return void 
     240     */ 
     241    function lfRegistProduct($objQuery, $line = "",$arrCSV) { 
     242         
    241243        $objDb = new SC_Helper_DB_Ex(); 
    242         $arrRet = $this->objFormParam->getHashArray(); 
    243  
    244         //カテゴリID 
    245         if ($arrRet['category_id'] == 0) { 
    246             $category_id = $objQuery->max("dtb_category", "category_id") + 1; 
    247             $sqlval['category_id'] = $category_id; 
    248             $update = false; 
    249         } else { 
    250             $sqlval['category_id'] = $arrRet['category_id']; 
    251             $update = true; 
    252         } 
    253  
    254         // カテゴリ名 
    255         $sqlval['category_name'] = $arrRet['category_name']; 
    256         //表示ランク(上から順に表示順を自動割り当て) 
    257         $sqlval['rank'] = ($rec_count + 1) - $line ; 
     244        $sqlval['category_id'] = $arrCSV[0]; 
     245        $sqlval['category_name'] = $arrCSV[1]; 
     246        $sqlval['parent_category_id'] = strlen($arrCSV[2]) ? $arrCSV[2] : 0; 
     247         
     248        //存在確認 
     249        $count = $objQuery->count("dtb_category","category_id = ?",array($sqlval['category_id'])); 
     250        $update = $count != 0; 
    258251 
    259252        // 親カテゴリID、レベル 
    260         if ($arrRet['parent_category_id'] == 0) { 
    261             $sqlval['parent_category_id'] = "0"; 
     253        if ($sqlval['parent_category_id'] == 0) { 
    262254            $sqlval['level'] = 1; 
    263255        } else { 
    264             $sqlval['parent_category_id'] = $arrRet['parent_category_id']; 
    265256            $parent_level = $objQuery->get("dtb_category", "level", "category_id = ?", array($sqlval['parent_category_id'])); 
    266257            $sqlval['level'] = $parent_level + 1; 
    267258        } 
    268  
     259         
    269260        // その他 
    270261        $time = date("Y-m-d H:i:s"); 
     
    275266        $sqlval['update_date'] = $time; 
    276267        $sqlval['creator_id'] = $_SESSION['member_id']; 
    277  
     268         
    278269        // 更新 
    279270        if ($update) { 
    280             echo "UPDATE "; 
     271            echo "更新 "; 
    281272            $where = "category_id = ?"; 
    282273            $objQuery->update("dtb_category", $sqlval, $where, array($sqlval['category_id'])); 
    283  
     274         
    284275        // 新規登録 
    285276        } else { 
    286             echo "INSERT "; 
     277            echo "登録 "; 
    287278            $sqlval['create_date'] = $time; 
     279            // ランク 
     280            if ($sqlval['parent_category_id'] == 0) { 
     281                // ROOT階層で最大のランクを取得する。 
     282                $where = "parent_category_id = ?"; 
     283                $sqlval['rank'] = $objQuery->max("dtb_category", "rank", $where, array($sqlval['parent_category_id'])) + 1; 
     284            } else { 
     285                // 親のランクを自分のランクとする。 
     286                $where = "category_id = ?"; 
     287                $sqlval['rank'] = $objQuery->get("dtb_category", "rank", $where, array($sqlval['parent_category_id'])); 
     288                // 追加レコードのランク以上のレコードを一つあげる。 
     289                $sqlup = "UPDATE dtb_category SET rank = rank + 1 WHERE rank >= ?"; 
     290                $objQuery->exec($sqlup, array($sqlval['rank'])); 
     291                 
     292            } 
    288293            $objQuery->insert("dtb_category", $sqlval); 
    289294        } 
     
    295300     * @return void 
    296301     */ 
    297     function lfCheckError() { 
    298         $arrRet =  $this->objFormParam->getHashArray(); 
     302    function lfCheckError($arrCSV) { 
     303//        $arrRet =  $this->objFormParam->getHashArray(); 
     304        $arrRet['category_id'] = $arrCSV[0]; 
     305        $arrRet['category_name'] = $arrCSV[1]; 
     306        $arrRet['parent_category_id'] = $arrCSV[2]; 
     307         
    299308        $objQuery = new SC_Query(); 
     309         
    300310        $objErr = new SC_CheckError($arrRet); 
    301311        $objErr->arrErr = $this->objFormParam->checkError(false); 
    302  
     312         
    303313        // 親カテゴリID設定 
    304314        if ($arrRet['parent_category_id'] == 0) { 
     
    307317            $parent_category_id = $arrRet['parent_category_id']; 
    308318        } 
    309  
     319         
    310320        // 存在する親カテゴリIDかチェック 
    311321        if (count($objErr->arrErr) == 0) { 
     
    317327            } 
    318328        } 
    319  
     329         
    320330        // 階層チェック 
    321331        if (!isset($objErr->arrErr['category_name']) && !isset($objErr->arrErr['parent_category_id'])) { 
     
    332342            if (empty($arrCat)) { 
    333343                $arrCat = array(array("category_id" => "", "category_name" => "")); 
     344            } 
    334345            // 編集中のレコード以外に同じ名称が存在する場合 
    335             }elseif ($arrCat[0]['category_id'] != $arrRet['category_id'] && $arrCat[0]['category_name'] == $arrRet['category_name']) { 
    336                 $objErr->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。\n"; 
     346            if ($arrCat[0]['category_id'] != $arrRet['category_id'] && $arrCat[0]['category_name'] == $arrRet['category_name']) { 
     347                echo $arrCat[0]['category_id']; 
     348                echo "#######--------- line is ".__LINE__." on ".__FILE__."--------########<br/>"; 
     349                         
     350                echo $arrRet['category_id']; 
     351                echo "#######--------- line is ".__LINE__." on ".__FILE__."--------########<br/>"; 
     352                         
     353                echo  $arrCat[0]['category_name'] ; 
     354                echo "#######--------- line is ".__LINE__." on ".__FILE__."--------########<br/>"; 
     355                        echo  $arrRet['category_name']; 
     356                        echo "#######--------- line is ".__LINE__." on ".__FILE__."--------########<br/>"; 
     357                                 
     358                 
     359                $objErr->arrErr['category_name'] = "※ 既に同じ内容の登録が存在します。</br>"; 
     360                 
    337361            } 
    338362        } 
     
    343367     * CSVのカウント数を得る. 
    344368     * 
    345      * @param resource $fp fopenを使用して作成したファイルポインタ 
    346      * @return integer CSV のカウント数 
     369     * @param string $fp fopenを使用して作成したファイルポインタ 
     370     * @return mixed CSV のカウント数; $file_name が無効な場合は false 
    347371     */ 
    348372    function lfCSVRecordCount($fp) { 
Note: See TracChangeset for help on using the changeset viewer.