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

Revision 15540, 9.6 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    function lfGetProductsCSV($where, $option, $arrval, $arrOutputCols) {
59        $objDb = new SC_Helper_DB_Ex();
60
61        $from = "vw_product_class AS prdcls";
62        $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols);
63
64        $objQuery = new SC_Query();
65        $objQuery->setoption($option);
66
67        $list_data = $objQuery->select($cols, $from, $where, $arrval);
68        $max = count($list_data);
69
70        // 規格分類名一覧
71        $arrClassCatName = $objDb->sfGetIDValueList("dtb_classcategory", "classcategory_id", "name");
72
73        for($i = 0; $i < $max; $i++) {
74            // 関連商品情報の付与
75            $list_data[$i]['classcategory_id1'] = $arrClassCatName[$list_data[$i]['classcategory_id1']];
76            $list_data[$i]['classcategory_id2'] = $arrClassCatName[$list_data[$i]['classcategory_id2']];
77
78            // 各項目をCSV出力用に変換する。
79            $data .= $this->lfMakeProductsCSV($list_data[$i]);
80        }
81        return $data;
82    }
83
84    // CSV出力データを作成する。(レビュー)
85    function lfGetReviewCSV($where, $option, $arrval) {
86
87        $from = "dtb_review AS A INNER JOIN dtb_products AS B on A.product_id = B.product_id ";
88        $cols = SC_Utils_Ex::sfGetCommaList($this->arrREVIEW_CVSCOL);
89
90        $objQuery = new SC_Query();
91        $objQuery->setoption($option);
92
93        $list_data = $objQuery->select($cols, $from, $where, $arrval);
94
95        $max = count($list_data);
96        for($i = 0; $i < $max; $i++) {
97            // 各項目をCSV出力用に変換する。
98            if (!isset($data)) $data = "";
99            $data .= $this->lfMakeReviewCSV($list_data[$i]);
100        }
101        return $data;
102    }
103
104    // CSV出力データを作成する。(トラックバック)
105    function lfGetTrackbackCSV($where, $option, $arrval) {
106        $from = "dtb_trackback AS A INNER JOIN dtb_products AS B on A.product_id = B.product_id ";
107        $cols = SC_Utils_Ex::sfGetCommaList($this->arrTRACKBACK_CVSCOL);
108
109        $objQuery = new SC_Query();
110        $objQuery->setoption($option);
111
112        $list_data = $objQuery->select($cols, $from, $where, $arrval);
113
114        $max = count($list_data);
115        for($i = 0; $i < $max; $i++) {
116            // 各項目をCSV出力用に変換する。
117            $data .= $this->lfMakeTrackbackCSV($list_data[$i]);
118        }
119        return $data;
120    }
121
122    // 各項目をCSV出力用に変換する。(商品)
123    function lfMakeProductsCSV($list) {
124        $line = "";
125        if(is_array($list)) {
126            foreach($list as $key => $val) {
127                $tmp = "";
128                switch($key) {
129                case 'point_rate':
130                    if($val == "") {
131                        $tmp = '0';
132                    } else {
133                        $tmp = $val;
134                    }
135                    break;
136                default:
137                    $tmp = $val;
138                    break;
139                }
140
141                $tmp = str_replace("\"", "\\\"", $tmp);
142                $line .= "\"".$tmp."\",";
143            }
144            // 文末の","を変換
145            $line = ereg_replace(",$", "\n", $line);
146        }
147        return $line;
148    }
149
150    // 各項目をCSV出力用に変換する。(レビュー)
151    function lfMakeReviewCSV($list) {
152        $line = "";
153
154        foreach($list as $key => $val) {
155            $tmp = "";
156            switch($key) {
157            case 'sex':
158                $tmp = isset($this->arrSex[$val]) ? $this->arrSex[$val] : "";
159                break;
160            case 'recommend_level':
161                $tmp = isset($this->arrRECOMMEND[$val]) ? $this->arrRECOMMEND[$val]
162                                                        : "";
163                break;
164            case 'status':
165                $tmp = isset($this->arrDISP[$val]) ? $this->arrDISP[$val] : "";
166                break;
167            default:
168                $tmp = $val;
169                break;
170            }
171
172            $tmp = ereg_replace("[\",]", " ", $tmp);
173            $line .= "\"".$tmp."\",";
174        }
175        // 文末の","を変換
176        $line = ereg_replace(",$", "\n", $line);
177        return $line;
178    }
179
180    // 各項目をCSV出力用に変換する。(トラックバック)
181    function lfMakeTrackbackCSV($list) {
182
183        $line = "";
184
185        foreach($list as $key => $val) {
186            $tmp = "";
187            switch($key) {
188            case 'status':
189                $tmp = $this->arrTrackBackStatus[$val];
190                break;
191            default:
192                $tmp = $val;
193                break;
194            }
195
196            $tmp = ereg_replace("[\",]", " ", $tmp);
197            $line .= "\"".$tmp."\",";
198        }
199        // 文末の","を変換
200        $line = ereg_replace(",$", "\n", $line);
201        return $line;
202    }
203
204    /**
205     * CSV出力項目を取得する.
206     *
207     * @param integer $csv_id CSV ID
208     * @param string $where SQL の WHERE 句
209     * @param array $arrVal WHERE 句の要素
210     * @return array CSV 出力項目の配列
211     */
212    function sfgetCsvOutput($csv_id = "", $where = "", $arrVal = array()){
213        $objQuery = new SC_Query();
214        $arrData = array();
215        $ret = array();
216
217        $sql = "";
218        $sql .= " SELECT ";
219        $sql .= "     no, ";
220        $sql .= "     csv_id, ";
221        $sql .= "     col, ";
222        $sql .= "     disp_name, ";
223        $sql .= "     rank, ";
224        $sql .= "     status, ";
225        $sql .= "     create_date, ";
226        $sql .= "     update_date ";
227        $sql .= " FROM ";
228        $sql .= "     dtb_csv ";
229
230        if ($where != "") {
231            $sql .= $where;
232            $arrData = $arrVal;
233        }elseif($csv_id != ""){
234            $sql .= " WHERE csv_id = ? ";
235            $arrData = array($csv_id);
236        }
237
238        $sql .= " ORDER BY ";
239        $sql .= "     rank , no";
240        $sql .= " ";
241
242        $ret = $objQuery->getall($sql, $arrData);
243
244        return $ret;
245    }
246
247    /**
248     * 項目情報を初期化する.
249     *
250     * @access private
251     * @return void
252     */
253    function init() {
254        $this->arrSubnavi = array(
255                                  1 => 'product',
256                                  2 => 'customer',
257                                  3 => 'order',
258                                  4 => 'campaign'
259                                  );
260
261        $this->arrSubnaviName = array(
262                                      1 => '商品管理',
263                                      2 => '顧客管理',
264                                      3 => '受注管理',
265                                      4 => 'キャンペーン'
266                                      );
267
268
269        $this->arrREVIEW_CVSCOL = array(
270                                        'B.name',
271                                        'A.status',
272                                        'A.create_date',
273                                        'A.reviewer_name',
274                                        'A.sex',
275                                        'A.recommend_level',
276                                        'A.title',
277                                        'A.comment'
278                                        );
279
280        $this->arrREVIEW_CVSTITLE = array(
281                                          '商品名',
282                                          'レビュー表示',
283                                          '投稿日',
284                                          '投稿者名',
285                                          '性別',
286                                          'おすすめレベル',
287                                          'タイトル',
288                                          'コメント'
289                                          );
290
291        $this->arrTRACKBACK_CVSTITLE = array(
292                                             '商品名',
293                                             'ブログ名',
294                                             'ブログ記事タイトル',
295                                             'ブログ記事内容',
296                                             '状態',
297                                             '投稿日'
298                                             );
299
300        $this->arrTRACKBACK_CVSCOL = array(
301                                           'B.name',
302                                           'A.blog_name',
303                                           'A.title',
304                                           'A.excerpt',
305                                           'A.status',
306                                           'A.create_date'
307                                           );
308    }
309  }
310?>
Note: See TracBrowser for help on using the repository browser.