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

Revision 15566, 10.8 KB checked in by nanasess, 15 years ago (diff)

index_csv.inc から関数を移植

  • 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 lfMakeProductsCSV($list) {
169        $line = "";
170        if(is_array($list)) {
171            foreach($list as $key => $val) {
172                $tmp = "";
173                switch($key) {
174                case 'point_rate':
175                    if($val == "") {
176                        $tmp = '0';
177                    } else {
178                        $tmp = $val;
179                    }
180                    break;
181                default:
182                    $tmp = $val;
183                    break;
184                }
185
186                $tmp = str_replace("\"", "\\\"", $tmp);
187                $line .= "\"".$tmp."\",";
188            }
189            // 文末の","を変換
190            $line = ereg_replace(",$", "\r\n", $line);
191        }
192        return $line;
193    }
194
195    // 各項目をCSV出力用に変換する。(レビュー)
196    function lfMakeReviewCSV($list) {
197        $line = "";
198
199        foreach($list as $key => $val) {
200            $tmp = "";
201            switch($key) {
202            case 'sex':
203                $tmp = isset($this->arrSex[$val]) ? $this->arrSex[$val] : "";
204                break;
205            case 'recommend_level':
206                $tmp = isset($this->arrRECOMMEND[$val]) ? $this->arrRECOMMEND[$val]
207                                                        : "";
208                break;
209            case 'status':
210                $tmp = isset($this->arrDISP[$val]) ? $this->arrDISP[$val] : "";
211                break;
212            default:
213                $tmp = $val;
214                break;
215            }
216
217            $tmp = ereg_replace("[\",]", " ", $tmp);
218            $line .= "\"".$tmp."\",";
219        }
220        // 文末の","を変換
221        $line = ereg_replace(",$", "\r\n", $line);
222        return $line;
223    }
224
225    // 各項目をCSV出力用に変換する。(トラックバック)
226    function lfMakeTrackbackCSV($list) {
227
228        $line = "";
229
230        foreach($list as $key => $val) {
231            $tmp = "";
232            switch($key) {
233            case 'status':
234                $tmp = $this->arrTrackBackStatus[$val];
235                break;
236            default:
237                $tmp = $val;
238                break;
239            }
240
241            $tmp = ereg_replace("[\",]", " ", $tmp);
242            $line .= "\"".$tmp."\",";
243        }
244        // 文末の","を変換
245        $line = ereg_replace(",$", "\r\n", $line);
246        return $line;
247    }
248
249    /**
250     * CSV出力項目を取得する.
251     *
252     * @param integer $csv_id CSV ID
253     * @param string $where SQL の WHERE 句
254     * @param array $arrVal WHERE 句の要素
255     * @return array CSV 出力項目の配列
256     */
257    function sfgetCsvOutput($csv_id = "", $where = "", $arrVal = array()){
258        $objQuery = new SC_Query();
259        $arrData = array();
260        $ret = array();
261
262        $sql = "";
263        $sql .= " SELECT ";
264        $sql .= "     no, ";
265        $sql .= "     csv_id, ";
266        $sql .= "     col, ";
267        $sql .= "     disp_name, ";
268        $sql .= "     rank, ";
269        $sql .= "     status, ";
270        $sql .= "     create_date, ";
271        $sql .= "     update_date ";
272        $sql .= " FROM ";
273        $sql .= "     dtb_csv ";
274
275        if ($where != "") {
276            $sql .= $where;
277            $arrData = $arrVal;
278        }elseif($csv_id != ""){
279            $sql .= " WHERE csv_id = ? ";
280            $arrData = array($csv_id);
281        }
282
283        $sql .= " ORDER BY ";
284        $sql .= "     rank , no";
285        $sql .= " ";
286
287        $ret = $objQuery->getall($sql, $arrData);
288
289        return $ret;
290    }
291
292    /**
293     * 項目情報を初期化する.
294     *
295     * @access private
296     * @return void
297     */
298    function init() {
299        $this->arrSubnavi = array(
300                                  1 => 'product',
301                                  2 => 'customer',
302                                  3 => 'order',
303                                  4 => 'campaign'
304                                  );
305
306        $this->arrSubnaviName = array(
307                                      1 => '商品管理',
308                                      2 => '顧客管理',
309                                      3 => '受注管理',
310                                      4 => 'キャンペーン'
311                                      );
312
313
314        $this->arrREVIEW_CVSCOL = array(
315                                        'B.name',
316                                        'A.status',
317                                        'A.create_date',
318                                        'A.reviewer_name',
319                                        'A.sex',
320                                        'A.recommend_level',
321                                        'A.title',
322                                        'A.comment'
323                                        );
324
325        $this->arrREVIEW_CVSTITLE = array(
326                                          '商品名',
327                                          'レビュー表示',
328                                          '投稿日',
329                                          '投稿者名',
330                                          '性別',
331                                          'おすすめレベル',
332                                          'タイトル',
333                                          'コメント'
334                                          );
335
336        $this->arrTRACKBACK_CVSTITLE = array(
337                                             '商品名',
338                                             'ブログ名',
339                                             'ブログ記事タイトル',
340                                             'ブログ記事内容',
341                                             '状態',
342                                             '投稿日'
343                                             );
344
345        $this->arrTRACKBACK_CVSCOL = array(
346                                           'B.name',
347                                           'A.blog_name',
348                                           'A.title',
349                                           'A.excerpt',
350                                           'A.status',
351                                           'A.create_date'
352                                           );
353    }
354}
355?>
Note: See TracBrowser for help on using the repository browser.