source: branches/feature-module-update/data/class/helper/SC_Helper_CSV.php @ 15581

Revision 15581, 11.9 KB checked in by nanasess, 17 years ago (diff)

リファクタリング

  • 関数を移動し, 元ファイル削除
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-httpd-php; charset=utf-8
Line 
1<?php
2  /*
3   * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4   *
5   * http://www.lockon.co.jp/
6   */
7
8  /**
9   * CSV 関連 のヘルパークラス.
10   *
11   * @package Page
12   * @author LOCKON CO.,LTD.
13   * @version $Id$
14   */
15class SC_Helper_CSV {
16
17    // {{{ properties
18
19    /** 項目英名 */
20    var $arrSubnavi;
21
22    /** 項目名 */
23    var $arrSubnaviName;
24
25    /** レビュー管理項目 */
26    var $arrREVIEW_CVSCOL;
27
28    /** レビュータイトル */
29    var $arrREVIEW_CVSTITLE;
30
31    /** トラックバック項目 */
32    var $arrTRACKBACK_CVSCOL;
33
34    /** トラックバックタイトル */
35    var $arrTRACKBACK_CVSTITLE;
36
37
38    // }}}
39    // {{{ constructor
40
41    /**
42     * デフォルトコンストラクタ.
43     */
44    function SC_Helper_CSV() {
45        $this->init();
46
47        $masterData = new SC_DB_MasterData_Ex();
48        $this->arrSex = $masterData->getMasterData("mtb_sex");
49        $this->arrDISP = $masterData->getMasterData("mtb_disp");
50        $this->arrRECOMMEND = $masterData->getMasterData("mtb_recommend");
51    }
52
53    // }}}
54    // {{{ functions
55
56    /**
57     * CSV 項目を出力する.
58     *
59     * @param integer $csv_id CSV ID
60     * @param string $where SQL の WHERE 句
61     * @param array $arrVal WHERE 句の要素
62     * @return array CSV 項目の配列
63     */
64    function sfgetCsvOutput($csv_id = "", $where = "", $arrVal = array()){
65        $objQuery = new SC_Query();
66        $arrData = array();
67        $ret = array();
68
69        $sql = "";
70        $sql .= " SELECT ";
71        $sql .= "     no, ";
72        $sql .= "     csv_id, ";
73        $sql .= "     col, ";
74        $sql .= "     disp_name, ";
75        $sql .= "     rank, ";
76        $sql .= "     status, ";
77        $sql .= "     create_date, ";
78        $sql .= "     update_date ";
79        $sql .= " FROM ";
80        $sql .= "     dtb_csv ";
81
82        if ($where != "") {
83            $sql .= $where;
84            $arrData = $arrVal;
85        }elseif($csv_id != ""){
86            $sql .= " WHERE csv_id = ? ";
87            $arrData = array($csv_id);
88        }
89
90        $sql .= " ORDER BY ";
91        $sql .= "     rank , no";
92        $sql .= " ";
93
94        $ret = $objQuery->getall($sql, $arrData);
95
96        return $ret;
97    }
98
99
100    // CSV出力データを作成する。(商品)
101    function lfGetProductsCSV($where, $option, $arrval, $arrOutputCols) {
102        $objDb = new SC_Helper_DB_Ex();
103
104        $from = "vw_product_class AS prdcls";
105        $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols);
106
107        $objQuery = new SC_Query();
108        $objQuery->setoption($option);
109
110        $list_data = $objQuery->select($cols, $from, $where, $arrval);
111        $max = count($list_data);
112
113        // 規格分類名一覧
114        $arrClassCatName = $objDb->sfGetIDValueList("dtb_classcategory", "classcategory_id", "name");
115
116        if (!isset($data)) $data = "";
117        for($i = 0; $i < $max; $i++) {
118            // 関連商品情報の付与
119            $list_data[$i]['classcategory_id1'] = $arrClassCatName[$list_data[$i]['classcategory_id1']];
120            $list_data[$i]['classcategory_id2'] = $arrClassCatName[$list_data[$i]['classcategory_id2']];
121
122            // 各項目をCSV出力用に変換する。
123            $data .= $this->lfMakeProductsCSV($list_data[$i]);
124        }
125        return $data;
126    }
127
128    // CSV出力データを作成する。(レビュー)
129    function lfGetReviewCSV($where, $option, $arrval) {
130
131        $from = "dtb_review AS A INNER JOIN dtb_products AS B on A.product_id = B.product_id ";
132        $cols = SC_Utils_Ex::sfGetCommaList($this->arrREVIEW_CVSCOL);
133
134        $objQuery = new SC_Query();
135        $objQuery->setoption($option);
136
137        $list_data = $objQuery->select($cols, $from, $where, $arrval);
138
139        $max = count($list_data);
140        if (!isset($data)) $data = "";
141        for($i = 0; $i < $max; $i++) {
142            // 各項目をCSV出力用に変換する。
143            $data .= $this->lfMakeReviewCSV($list_data[$i]);
144        }
145        return $data;
146    }
147
148    // CSV出力データを作成する。(トラックバック)
149    function lfGetTrackbackCSV($where, $option, $arrval) {
150        $from = "dtb_trackback AS A INNER JOIN dtb_products AS B on A.product_id = B.product_id ";
151        $cols = SC_Utils_Ex::sfGetCommaList($this->arrTRACKBACK_CVSCOL);
152
153        $objQuery = new SC_Query();
154        $objQuery->setoption($option);
155
156        $list_data = $objQuery->select($cols, $from, $where, $arrval);
157
158        $max = count($list_data);
159        if (!isset($data)) $data = "";
160        for($i = 0; $i < $max; $i++) {
161            // 各項目をCSV出力用に変換する。
162            $data .= $this->lfMakeTrackbackCSV($list_data[$i]);
163        }
164        return $data;
165    }
166
167    // CSV出力データを作成する。
168    function lfGetCSV($from, $where, $option, $arrval, $arrCsvOutputCols = "") {
169
170        $cols = SC_Utils_Ex::sfGetCommaList($arrCsvOutputCols);
171
172        $objQuery = new SC_Query();
173        $objQuery->setoption($option);
174
175        $list_data = $objQuery->select($cols, $from, $where, $arrval);
176
177        $max = count($list_data);
178        for($i = 0; $i < $max; $i++) {
179            // 各項目をCSV出力用に変換する。
180            $data .= $this->lfMakeCSV($list_data[$i]);
181        }
182        return $data;
183    }
184
185    // 各項目をCSV出力用に変換する。
186    function lfMakeCSV($list) {
187        global $arrPref;
188
189        $line = "";
190
191        foreach($list as $key => $val) {
192            $tmp = "";
193            switch($key) {
194            case 'order_pref':
195                $tmp = $arrPref[$val];
196                break;
197            default:
198                $tmp = $val;
199                break;
200            }
201
202            $tmp = ereg_replace("[\",]", " ", $tmp);
203            $line .= "\"".$tmp."\",";
204        }
205        // 文末の","を変換
206        $line = ereg_replace(",$", "\r\n", $line);
207        return $line;
208    }
209
210    // 各項目をCSV出力用に変換する。(商品)
211    function lfMakeProductsCSV($list) {
212        $line = "";
213        if(is_array($list)) {
214            foreach($list as $key => $val) {
215                $tmp = "";
216                switch($key) {
217                case 'point_rate':
218                    if($val == "") {
219                        $tmp = '0';
220                    } else {
221                        $tmp = $val;
222                    }
223                    break;
224                default:
225                    $tmp = $val;
226                    break;
227                }
228
229                $tmp = str_replace("\"", "\\\"", $tmp);
230                $line .= "\"".$tmp."\",";
231            }
232            // 文末の","を変換
233            $line = ereg_replace(",$", "\r\n", $line);
234        }
235        return $line;
236    }
237
238    // 各項目をCSV出力用に変換する。(レビュー)
239    function lfMakeReviewCSV($list) {
240        $line = "";
241
242        foreach($list as $key => $val) {
243            $tmp = "";
244            switch($key) {
245            case 'sex':
246                $tmp = isset($this->arrSex[$val]) ? $this->arrSex[$val] : "";
247                break;
248            case 'recommend_level':
249                $tmp = isset($this->arrRECOMMEND[$val]) ? $this->arrRECOMMEND[$val]
250                                                        : "";
251                break;
252            case 'status':
253                $tmp = isset($this->arrDISP[$val]) ? $this->arrDISP[$val] : "";
254                break;
255            default:
256                $tmp = $val;
257                break;
258            }
259
260            $tmp = ereg_replace("[\",]", " ", $tmp);
261            $line .= "\"".$tmp."\",";
262        }
263        // 文末の","を変換
264        $line = ereg_replace(",$", "\r\n", $line);
265        return $line;
266    }
267
268    // 各項目をCSV出力用に変換する。(トラックバック)
269    function lfMakeTrackbackCSV($list) {
270
271        $line = "";
272
273        foreach($list as $key => $val) {
274            $tmp = "";
275            switch($key) {
276            case 'status':
277                $tmp = $this->arrTrackBackStatus[$val];
278                break;
279            default:
280                $tmp = $val;
281                break;
282            }
283
284            $tmp = ereg_replace("[\",]", " ", $tmp);
285            $line .= "\"".$tmp."\",";
286        }
287        // 文末の","を変換
288        $line = ereg_replace(",$", "\r\n", $line);
289        return $line;
290    }
291
292    /**
293     * CSV出力項目を取得する.
294     *
295     * @param integer $csv_id CSV ID
296     * @param string $where SQL の WHERE 句
297     * @param array $arrVal WHERE 句の要素
298     * @return array CSV 出力項目の配列
299     */
300    function sfgetCsvOutput($csv_id = "", $where = "", $arrVal = array()){
301        $objQuery = new SC_Query();
302        $arrData = array();
303        $ret = array();
304
305        $sql = "";
306        $sql .= " SELECT ";
307        $sql .= "     no, ";
308        $sql .= "     csv_id, ";
309        $sql .= "     col, ";
310        $sql .= "     disp_name, ";
311        $sql .= "     rank, ";
312        $sql .= "     status, ";
313        $sql .= "     create_date, ";
314        $sql .= "     update_date ";
315        $sql .= " FROM ";
316        $sql .= "     dtb_csv ";
317
318        if ($where != "") {
319            $sql .= $where;
320            $arrData = $arrVal;
321        }elseif($csv_id != ""){
322            $sql .= " WHERE csv_id = ? ";
323            $arrData = array($csv_id);
324        }
325
326        $sql .= " ORDER BY ";
327        $sql .= "     rank , no";
328        $sql .= " ";
329
330        $ret = $objQuery->getall($sql, $arrData);
331
332        return $ret;
333    }
334
335    /**
336     * 項目情報を初期化する.
337     *
338     * @access private
339     * @return void
340     */
341    function init() {
342        $this->arrSubnavi = array(
343                                  1 => 'product',
344                                  2 => 'customer',
345                                  3 => 'order',
346                                  4 => 'campaign'
347                                  );
348
349        $this->arrSubnaviName = array(
350                                      1 => '商品管理',
351                                      2 => '顧客管理',
352                                      3 => '受注管理',
353                                      4 => 'キャンペーン'
354                                      );
355
356
357        $this->arrREVIEW_CVSCOL = array(
358                                        'B.name',
359                                        'A.status',
360                                        'A.create_date',
361                                        'A.reviewer_name',
362                                        'A.sex',
363                                        'A.recommend_level',
364                                        'A.title',
365                                        'A.comment'
366                                        );
367
368        $this->arrREVIEW_CVSTITLE = array(
369                                          '商品名',
370                                          'レビュー表示',
371                                          '投稿日',
372                                          '投稿者名',
373                                          '性別',
374                                          'おすすめレベル',
375                                          'タイトル',
376                                          'コメント'
377                                          );
378
379        $this->arrTRACKBACK_CVSTITLE = array(
380                                             '商品名',
381                                             'ブログ名',
382                                             'ブログ記事タイトル',
383                                             'ブログ記事内容',
384                                             '状態',
385                                             '投稿日'
386                                             );
387
388        $this->arrTRACKBACK_CVSCOL = array(
389                                           'B.name',
390                                           'A.blog_name',
391                                           'A.title',
392                                           'A.excerpt',
393                                           'A.status',
394                                           'A.create_date'
395                                           );
396    }
397}
398?>
Note: See TracBrowser for help on using the repository browser.