source: temp/trunk/html/admin/develop/upload_csv.php @ 4965

Revision 4965, 8.0 KB checked in by kakinaka, 20 years ago (diff)

blank

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