source: branches/dev/html/admin/develop/upload_csv.php @ 17

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