source: temp/trunk/html/admin/develop/csv.php @ 5162

Revision 5162, 7.3 KB checked in by kakinaka, 20 years ago (diff)

* empty log message *

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1<?php
2
3require_once("../require.php");
4
5$conn = new SC_DBConn();
6$objView = new SC_AdminView();
7$objSess = new SC_Session();
8
9// ¥Ñ¥é¥á¡¼¥¿´ÉÍý¥¯¥é¥¹
10$objFormParam = new SC_FormParam();
11// ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½
12lfInitParam();
13$colmax = $objFormParam->getCount();
14
15// °ì»þ¥Õ¥¡¥¤¥ë̾¤Î¼èÆÀ
16$filepath = $argv[1];
17
18if(!file_exists($filepath)) {
19    fwrite(STDOUT, "no file exists.\n");
20    exit;
21}
22
23// ¥¨¥ó¥³¡¼¥É
24$enc_filepath = sfEncodeFile($filepath, "EUC-JP", CSV_TEMP_DIR);
25
26$total = 0;
27
28for($i = 0; $i < 1500; $i++) {
29    $ret = lfRegistCSV($enc_filepath, $colmax, $total);
30    $total+= $ret;
31}
32
33fwrite(STDOUT, "¢£" . $total . "·ï¤Î¥ì¥³¡¼¥É¤òÅÐÏ¿¤·¤Þ¤·¤¿¡£\n");
34
35//--------------------------------------------------------------------------------------------------------------------------
36
37/* ¥Õ¥¡¥¤¥ë¾ðÊó¤Î½é´ü²½ */
38function lfInitFile() {
39    global $objUpFile;
40    $objUpFile->addFile("CSV¥Õ¥¡¥¤¥ë", 'csv_file', array('csv'), CSV_SIZE, true, 0, 0, false);
41}
42
43/* ¥Ñ¥é¥á¡¼¥¿¾ðÊó¤Î½é´ü²½ */
44function lfInitParam() {
45    global $objFormParam;
46   
47    $objFormParam->addParam("¾¦ÉÊ̾", "name", MTEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
48    $objFormParam->addParam("¥«¥Æ¥´¥êID", "category_id", INT_LEN, "n", array("EXIST_CHECK","MAX_LENGTH_CHECK","NUM_CHECK"));
49    $objFormParam->addParam("¾¦ÉÊ¥³¡¼¥É", "product_code", STEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK"));
50    $objFormParam->addParam("¾¦ÉʲÁ³Ê", "price02", PRICE_LEN, "n", array("EXIST_CHECK","MAX_LENGTH_CHECK","NUM_CHECK"));
51    $objFormParam->addParam("¾¦ÉʲÁ³Ê", "price01", PRICE_LEN, "n", array("MAX_LENGTH_CHECK","NUM_CHECK"));
52    $objFormParam->addParam("ºß¸Ë¿ô", "stock", INT_LEN, "n", array("MAX_LENGTH_CHECK","NUM_CHECK"));
53    $objFormParam->addParam("¹ØÆþÀ©¸Â", "sale_limit", INT_LEN, "n", array("MAX_LENGTH_CHECK","NUM_CHECK"));
54    $objFormParam->addParam("¥á¡¼¥«¡¼URL", "comment1", LTEXT_LEN, "KVa", array("URL_CHECK", "SPTAB_CHECK","MAX_LENGTH_CHECK"));
55    $objFormParam->addParam("¾¦ÉÊ¥¹¥Æ¡¼¥¿¥¹", "product_flag", INT_LEN, "n", array("MAX_LENGTH_CHECK","NUM_CHECK"));
56    $objFormParam->addParam("¥Ý¥¤¥ó¥ÈÉÕͿΨ", "point_rate", PERCENTAGE_LEN, "n", array("EXIST_CHECK","MAX_LENGTH_CHECK","NUM_CHECK"));
57    $objFormParam->addParam("¥á¥¤¥ó°ìÍ÷¥³¥á¥ó¥È", "main_list_comment", LTEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
58    $objFormParam->addParam("¥á¥¤¥ó¥³¥á¥ó¥È", "main_comment", LTEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK"));
59   
60    for($i = 1; $i <= PRODUCTSUB_MAX; $i++) {
61        $objFormParam->addParam("¾ÜºÙ-¥µ¥Ö¥¿¥¤¥È¥ë($i)", "sub_title$i", LTEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK"));
62        $objFormParam->addParam("¾ÜºÙ-¥µ¥Ö¥³¥á¥ó¥È($i)", "sub_comment$i", LTEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK"));
63        $objFormParam->addParam("¾ÜºÙ-¥µ¥Ö²èÁü($i)", "sub_image$i", LTEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK","FIND_FILE"));
64        $objFormParam->addParam("¾ÜºÙ-¥µ¥Ö²èÁü³ÈÂç($i)", "sub_large_image$i", LTEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK","FIND_FILE"));
65    }
66       
67    $objFormParam->addParam("¥á¥¤¥ó°ìÍ÷²èÁü", "main_list_image", LTEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK","FIND_FILE"));
68    $objFormParam->addParam("¥á¥¤¥ó¾ÜºÙ²èÁü", "main_image", LTEXT_LEN, "KVa", array("EXIST_CHECK","SPTAB_CHECK","MAX_LENGTH_CHECK","FIND_FILE"));
69    $objFormParam->addParam("¥á¥¤¥ó¾ÜºÙ³ÈÂç²èÁü", "main_large_image", LTEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK","FIND_FILE"));
70    $objFormParam->addParam("Èæ³Ó²èÁü", "file1", LTEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK","FIND_FILE"));
71    $objFormParam->addParam("¾¦Éʾܺ٥ե¡¥¤¥ë", "file2", LTEXT_LEN, "KVa", array("SPTAB_CHECK","MAX_LENGTH_CHECK"));
72    $objFormParam->addParam("Á÷ÎÁ", "deliv_fee", PRICE_LEN, "n", array("MAX_LENGTH_CHECK","NUM_CHECK"));
73    $objFormParam->addParam("ºß¸Ë̵À©¸Â", "stock_unlimited", INT_LEN, "n", array("MAX_LENGTH_CHECK","NUM_CHECK"));
74    $objFormParam->addParam("ÈÎÇä̵À©¸Â", "sale_unlimited", INT_LEN, "n", array("MAX_LENGTH_CHECK","NUM_CHECK"));
75}
76
77/* ÆÃ¼ì¹àÌܤÎÊÑ´¹ */
78function lfConvFormat($array) {
79    global $arrDISP;
80    foreach($array as $key => $val) {
81        switch($key) {
82        case 'status':
83            $arrRet[$key] = sfSearchKey($arrDISP, $val, 1);
84            break;
85        default:
86            $arrRet[$key] = $val;
87            break;
88        }
89    }
90    return $arrRet;
91}
92
93/* ¾¦Éʤο·µ¬Äɲà */
94function lfInsertProduct($objQuery) {
95    global $objFormParam;
96    $arrRet = $objFormParam->getHashArray();
97   
98    // µ¬³Ê¤ËÅÐÏ¿¤µ¤ì¤ëÃͤò½ü³°¤¹¤ë¡£
99    foreach($arrRet as $key => $val) {
100        switch($key) {
101        case 'product_code':
102        case 'price01':
103        case 'price02':
104        case 'stock':
105        case 'stock_unlimited':
106            break;
107        default:
108            $sqlval[$key] = $val;
109            break;
110        }
111    }
112   
113    if (DB_TYPE == "pgsql") {
114        $product_id = $objQuery->nextval("dtb_products", "product_id");
115        $sqlval['product_id'] = $product_id;
116    }
117    $sqlval['status'] = 1;  // ɽ¼¨¤ËÀßÄꤹ¤ë¡£
118    $sqlval['update_date'] = "Now()";
119    $sqlval['create_date'] = "Now()";
120    $sqlval['creator_id'] = $_SESSION['member_id'];
121   
122    if($_SESSION['member_id'] == "") {
123        $sqlval['creator_id'] = '0';
124    }
125       
126    $sqlval['rank'] = $objQuery->max("dtb_products", "rank", "del_flg = 0 AND category_id = ?", array($sqlval['category_id'])) + 1;
127   
128    // µ¬³ÊÅÐÏ¿
129    sfInsertProductClass($objQuery, $arrRet, $product_id);
130    // INSERT¤Î¼Â¹Ô
131    $objQuery->fast_insert("dtb_products", $sqlval);
132    if (DB_TYPE == "mysql") {
133        $product_id = $objQuery->nextval("dtb_products", "product_id");
134    }
135}
136
137/* ÆþÎÏÆâÍÆ¤Î¥Á¥§¥Ã¥¯ */
138function lfCheckError() {
139    global $objFormParam;
140    // ÆþÎϥǡ¼¥¿¤òÅϤ¹¡£
141    $arrRet =  $objFormParam->getHashArray();
142    $objErr = new SC_CheckError($arrRet);
143    $objErr->arrErr = $objFormParam->checkError(false);
144   
145    if(!isset($objErr->arrErr['category_id'])) {
146        $objQuery = new SC_Query();
147        $col = "level";
148        $table = "dtb_category";
149        $where = "category_id = ?";
150        $level = $objQuery->get($table, $col, $where, array($arrRet['category_id']));
151        if($level != LEVEL_MAX) {
152            $objErr->arrErr['category_id'] = "¢¨ ¤³¤Î¥«¥Æ¥´¥êID¤Ë¤Ï¾¦ÉʤòÅÐÏ¿¤Ç¤­¤Þ¤»¤ó¡£";
153        }
154    }
155    return $objErr->arrErr;
156}
157
158function lfRegistCSV($filepath, $colmax, $total) {
159    global $objFormParam;
160           
161    $fp = fopen($filepath, "r");
162    $line = 0;      // ¹Ô¿ô
163    $regist = 0;    // ÅÐÏ¿¿ô
164   
165    $objQuery = new SC_Query();
166   
167    $err = false;
168   
169    while(!feof($fp)) {
170        $arrCSV = fgetcsv($fp, 10000);
171        // ¹Ô¥«¥¦¥ó¥È
172        $line++;
173                       
174        // ¹àÌÜ¿ô¥«¥¦¥ó¥È
175        $max = count($arrCSV);
176       
177        // ¹àÌÜ¿ô¤¬1°Ê²¼¤Î¾ì¹ç¤Ï̵»ë¤¹¤ë
178        if($max <= 1) {
179            continue;           
180        }
181           
182        // ¹àÌÜ¿ô¥Á¥§¥Ã¥¯
183        if($max != $colmax) {
184            fwrite(STDOUT, "¢¨ ¹àÌÜ¿ô¤¬" . $max . "¸Ä¸¡½Ð¤µ¤ì¤Þ¤·¤¿¡£¹àÌÜ¿ô¤Ï" . $colmax . "¸Ä¤Ë¤Ê¤ê¤Þ¤¹¡£\n");
185           
186            ob_start();
187            print_r($arrCSV);
188            $objPage->tpl_debug = ob_get_contents();
189            ob_end_clean();
190           
191            $err = true;
192        } else {
193            // ¥·¡¼¥±¥ó¥¹ÇÛÎó¤ò³ÊǼ¤¹¤ë¡£
194            $objFormParam->setParam($arrCSV, true);
195            $arrRet = $objFormParam->getHashArray();
196            // Ãͤò¥Õ¥©¡¼¥Þ¥Ã¥ÈÊÑ´¹¤·¤Æ³ÊǼ¤¹¤ë¡£
197            $arrRet = lfConvFormat($arrRet);
198            $objFormParam->setParam($arrRet);
199            // ÆþÎÏÃͤÎÊÑ´¹
200            $objFormParam->convParam();
201            // <br>¤Ê¤·¤Ç¥¨¥é¡¼¼èÆÀ¤¹¤ë¡£
202            $objPage->arrCSVErr = lfCheckError();
203        }
204           
205        // ÆþÎÏ¥¨¥é¡¼¥Á¥§¥Ã¥¯
206        if(count($objPage->arrCSVErr) > 0) {
207            fwrite(STDOUT, "¢£" . $line . "¹ÔÌܤǥ¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£\n");
208            $objPage->arrParam = $objFormParam->getHashArray();
209            $err = true;
210        }
211           
212        if(!$err) {
213            $all = $total + $line;
214            fwrite(STDOUT, "writing $all\n");
215            $objQuery->begin();
216            lfInsertProduct($objQuery);
217            $objQuery->commit();
218            $regist++;
219        }
220    }
221    fclose($fp);
222   
223    return $regist;
224}
225?>
Note: See TracBrowser for help on using the repository browser.