source: branches/comu/html/admin/develop/csv.php @ 12197

Revision 12197, 7.4 KB checked in by adati, 17 years ago (diff)

1.3.0正式版のマージ

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