Changeset 18525


Ignore:
Timestamp:
2010/02/01 20:11:18 (12 years ago)
Author:
nanasess
bzr:base-revision:
svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_4:18524
bzr:committer:
Kentaro Ohkouchi <ohkouchi@loop-az.jp>
bzr:file-ids:

data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php 15472@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Ffeature-module-update%2Fdata%2Fclass%2Fpages%2Fadmin%2Fproducts%2FLC_Page_Admin_Products_UploadCSV.php
data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSVCategory.php 17047@1e3b908f-19a9-db11-a64c-001125224ba8:branches%2Fversion-2%2Fdata%2Fclass%2Fpages%2Fadmin%2Fproducts%2FLC_Page_Admin_Products_UploadCSVCategory.php
bzr:mapping-version:
v4
bzr:repository-uuid:
1e3b908f-19a9-db11-a64c-001125224ba8
bzr:revision-id:
ohkouchi@loop-az.jp-20100201111114-927czga31dyj225a
bzr:revno:
1896
bzr:revprop:branch-nick:
branches/version-2_4
bzr:root:
branches/version-2_4
bzr:text-parents:

data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.php svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_4:17941
data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSVCategory.php svn-v4:1e3b908f-19a9-db11-a64c-001125224ba8:branches/version-2_4:18409
bzr:timestamp:
2010-02-01 20:11:14.453000069 +0900
bzr:user-agent:
bzr2.0.3+bzr-svn1.0.1
svn:original-date:
2010-02-01T11:11:14.453000Z
Message:

merged r18477, r18501

  • CSVアップロードで無限ループの可能性があるのを修正(#566)
Location:
branches/version-2_4/data/class/pages/admin/products
Files:
2 edited

Legend:

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

    r17941 r18525  
    109109                $enc_filepath = SC_Utils_Ex::sfEncodeFile($filepath, 
    110110                                                          CHAR_CODE, CSV_TEMP_DIR); 
     111                $fp = fopen($enc_filepath, "r"); 
     112 
     113                // 無効なファイルポインタが渡された場合はエラー表示 
     114                if ($fp === false) { 
     115                    SC_Utils_Ex::sfDispError(""); 
     116                } 
    111117 
    112118                // レコード数を得る 
    113                 $rec_count = $this->lfCSVRecordCount($enc_filepath); 
    114  
    115                 $fp = fopen($enc_filepath, "r"); 
     119                $rec_count = $this->lfCSVRecordCount($fp); 
     120 
    116121                $line = 0;      // 行数 
    117122                $regist = 0;    // 登録数 
     
    490495     * CSVのカウント数を得る. 
    491496     * 
    492      * @param string $file_name ファイルパス 
     497     * @param resource $fp fopenを使用して作成したファイルポインタ 
    493498     * @return integer CSV のカウント数 
    494499     */ 
    495     function lfCSVRecordCount($file_name) { 
     500    function lfCSVRecordCount($fp) { 
    496501 
    497502        $count = 0; 
    498         $fp = fopen($file_name, "r"); 
    499503        while(!feof($fp)) { 
    500504            $arrCSV = fgetcsv($fp, CSV_LINE_MAX); 
    501505            $count++; 
    502506        } 
    503  
    504         return $count-1; 
     507        // ファイルポインタを戻す 
     508        if (rewind($fp)) { 
     509            return $count-1; 
     510        } else { 
     511            SC_Utils_Ex::sfDispError(""); 
     512        } 
    505513    } 
    506514 
  • branches/version-2_4/data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSVCategory.php

    r18409 r18525  
    106106                    CHAR_CODE, CSV_TEMP_DIR); 
    107107 
     108                    $fp = fopen($enc_filepath, "r"); 
     109 
     110                    // 無効なファイルポインタが渡された場合はエラー表示 
     111                    if ($fp === false) { 
     112                        SC_Utils_Ex::sfDispError(""); 
     113                    } 
     114 
    108115                    // レコード数を得る 
    109                     $rec_count = $this->lfCSVRecordCount($enc_filepath); 
    110                     if ($rec_count === false) { 
    111                         $err = false; 
    112                         $arrErr['bad_file_pointer'] = "※ 不正なファイルポインタが検出されました"; 
    113                     } 
    114  
    115                     $fp = fopen($enc_filepath, "r"); 
     116                    $rec_count = $this->lfCSVRecordCount($fp); 
     117 
    116118                    $line = 0;      // 行数 
    117119                    $regist = 0;    // 登録数 
     
    121123 
    122124                    echo "■ CSV登録進捗状況 <br/><br/>\n"; 
    123  
    124125                    while (!feof($fp) && !$err) { 
    125126                        $arrCSV = fgetcsv($fp, CSV_LINE_MAX); 
     
    192193                exit; 
    193194                break; 
    194             default: 
    195                 break; 
     195        default: 
     196            break; 
    196197        } 
    197198 
     
    342343     * CSVのカウント数を得る. 
    343344     * 
    344      * @param string $file_name ファイルパス 
    345      * @return mixed CSV のカウント数; $file_name が無効な場合は false 
    346      */ 
    347     function lfCSVRecordCount($file_name) { 
     345     * @param resource $fp fopenを使用して作成したファイルポインタ 
     346     * @return integer CSV のカウント数 
     347     */ 
     348    function lfCSVRecordCount($fp) { 
    348349        $count = 0; 
    349         $fp = fopen($file_name, "r"); 
    350         if ($fp !== false) { 
    351             while(!feof($fp)) { 
    352                 $arrCSV = fgetcsv($fp, CSV_LINE_MAX); 
    353                 $count++; 
    354             } 
    355         } else { 
    356             return false; 
    357         } 
    358         return $count-1; 
     350        while(!feof($fp)) { 
     351            $arrCSV = fgetcsv($fp, CSV_LINE_MAX); 
     352            $count++; 
     353        } 
     354        // ファイルポインタを戻す 
     355        if (rewind($fp)) { 
     356            return $count-1; 
     357        } else { 
     358            SC_Utils_Ex::sfDispError(""); 
     359        } 
    359360    } 
    360361 
Note: See TracChangeset for help on using the changeset viewer.