OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / widgets / ec_disp / include / db / ec_dispDb.php
1 <?php
2 /**
3  * DBクラス
4  *
5  * PHP versions 5
6  *
7  * LICENSE: This source file is licensed under the terms of the GNU General Public License.
8  *
9  * @package    Magic3 Framework
10  * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
11  * @copyright  Copyright 2006-2011 Magic3 Project.
12  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
13  * @version    SVN: $Id: ec_dispDb.php 5398 2012-11-22 02:29:37Z fishbone $
14  * @link       http://www.magic3.org
15  */
16 require_once($gEnvManager->getDbPath() . '/baseDb.php');
17
18 class ec_dispDb extends BaseDb
19 {
20         /**
21          * 商品一覧を取得
22          *
23          * @param string        $categoryId                     商品カテゴリーID
24          * @param string        $lang                           言語
25          * @param int           $limit                          取得する項目数
26          * @param int           $offset                         取得する先頭位置(0~)
27          * @param function      $callback                       コールバック関数
28          * @return                      なし
29          */
30         function getProductByCategoryId($categoryId, $lang, $limit, $offset, $callback)
31         {
32                 $queryStr = 'SELECT distinct(pt_serial) ';
33                 $queryStr .=  'FROM product RIGHT JOIN product_with_category ON pt_serial = pw_product_serial ';
34                 $queryStr .=  'WHERE pt_deleted = false ';// 削除されていない
35                 $queryStr .=    'AND pt_visible = true ';               // 表示可能な商品        
36                 $queryStr .=    'AND pt_language_id = ? ';
37                 if (!empty($categoryId)) $queryStr .=    'AND pw_category_id in (' . $categoryId . ') ';
38                 
39                 $serialArray = array();
40                 $ret = $this->selectRecords($queryStr, array($lang), $serialRows);
41                 if ($ret){
42                         for ($i = 0; $i < count($serialRows); $i++){
43                                 $serialArray[] = $serialRows[$i]['pt_serial'];
44                         }
45                 } else {                // データがない場合は終了
46                         return;
47                 }
48                 $serialStr = implode(',', $serialArray);
49                 if (empty($serialStr)) $serialStr = '0';        // 0レコードのときはダミー値を設定
50                 
51                 $queryStr  = 'SELECT * FROM product ';
52                 $queryStr .=   'WHERE pt_serial in (' . $serialStr . ') ';
53                 $queryStr .=   'ORDER BY pt_sort_order limit ' . $limit . ' offset ' . $offset;
54                 $this->selectLoop($queryStr, array(), $callback, null);
55         }
56         /**
57          * 商品総数を取得
58          *
59          * @param string        $categoryId                     商品カテゴリーID
60          * @param string        $lang                           言語
61          * @return int                                                  商品総数
62          */
63         function getProductCountByCategoryId($categoryId, $lang)
64         {
65                 $queryStr = 'SELECT distinct(pt_serial) ';
66                 $queryStr .=  'FROM product RIGHT JOIN product_with_category ON pt_serial = pw_product_serial ';
67                 $queryStr .=  'WHERE pt_deleted = false ';// 削除されていない
68                 $queryStr .=    'AND pt_visible = true ';               // 表示可能な商品
69                 $queryStr .=    'AND pt_language_id = ? ';
70                 if (!empty($categoryId)) $queryStr .=    'AND pw_category_id in (' . $categoryId . ') ';
71                 return $this->selectRecordCount($queryStr, array($lang));
72         }
73         /**
74          * 商品一覧を取得
75          *
76          * @param array         $keywords                       検索キーワード
77          * @param string        $lang                           言語
78          * @param int           $limit                          取得する項目数
79          * @param int           $offset                         取得する先頭位置(0~)
80          * @param function      $callback                       コールバック関数
81          * @return                      なし
82          */
83         function getProductByKeyword($keywords, $lang, $limit, $offset, $callback)
84         {
85                 $params = array();
86                 $queryStr = 'SELECT * FROM product ';
87                 $queryStr .=  'WHERE pt_language_id = ? '; $params[] = $lang;
88                 $queryStr .=    'AND pt_deleted = false ';              // 削除されていない
89                 $queryStr .=    'AND pt_visible = true ';               // 表示可能な商品
90                 
91                 // 商品名、商品コード、説明を検索
92                 if (!empty($keywords)){
93                         for ($i = 0; $i < count($keywords); $i++){
94                                 $keyword = addslashes($keywords[$i]);// 「'"\」文字をエスケープ
95                                 $queryStr .=    'AND (pt_name LIKE \'%' . $keyword . '%\' ';
96                                 $queryStr .=    'OR pt_code LIKE \'%' . $keyword . '%\' ';
97                                 $queryStr .=    'OR pt_description LIKE \'%' . $keyword . '%\' ';
98                                 $queryStr .=    'OR pt_description_short LIKE \'%' . $keyword . '%\') ';
99                         }
100                 }
101                 $queryStr .=  'ORDER BY pt_sort_order limit ' . $limit . ' offset ' . $offset;
102                 $this->selectLoop($queryStr, $params, $callback, null);
103         }
104         /**
105          * 商品総数を取得
106          *
107          * @param array         $keywords                       検索キーワード
108          * @param string        $lang                           言語
109          * @return int                                                  商品総数
110          */
111         function getProductCountByKeyword($keywords, $lang)
112         {
113                 $params = array();
114                 $queryStr = 'SELECT * FROM product ';
115                 $queryStr .=  'WHERE pt_language_id = ? '; $params[] = $lang;
116                 $queryStr .=    'AND pt_deleted = false ';              // 削除されていない
117                 $queryStr .=    'AND pt_visible = true ';               // 表示可能な商品
118
119                 // 商品名、商品コード、説明を検索
120                 if (!empty($keywords)){
121                         for ($i = 0; $i < count($keywords); $i++){
122                                 $keyword = addslashes($keywords[$i]);// 「'"\」文字をエスケープ
123                                 $queryStr .=    'AND (pt_name LIKE \'%' . $keyword . '%\' ';
124                                 $queryStr .=    'OR pt_code LIKE \'%' . $keyword . '%\' ';
125                                 $queryStr .=    'OR pt_description LIKE \'%' . $keyword . '%\' ';
126                                 $queryStr .=    'OR pt_description_short LIKE \'%' . $keyword . '%\') ';
127                         }
128                 }
129                 return $this->selectRecordCount($queryStr, $params);
130         }
131         /**
132          * 商品をシリアル番号で取得
133          *
134          * @param int           $serial                         シリアル番号
135          * @param array     $row                                レコード
136          * @param array     $row2                               商品価格
137          * @param array     $row3                               商品画像
138          * @param array     $row4                               商品ステータス
139          * @return bool                                                 取得 = true, 取得なし= false
140          */
141         function getProductBySerial($serial, &$row, &$row2, &$row3, &$row4)
142         {
143                 //$queryStr  = 'select * from product LEFT JOIN _login_user ON pt_create_user_id = lu_id AND lu_deleted = false ';
144                 $queryStr  = 'SELECT * FROM product LEFT JOIN product_record ON pt_id = pe_product_id AND pt_language_id = pe_language_id ';
145                 $queryStr .=   'WHERE pt_serial = ? ';
146                 $ret = $this->selectRecord($queryStr, array($serial), $row);
147                 if ($ret){
148                         $queryStr  = 'SELECT * FROM product_price ';
149                         $queryStr .=   'LEFT JOIN currency ON pp_currency_id = cu_id AND pp_language_id = cu_language_id ';
150                         $queryStr .=   'WHERE pp_deleted = false ';// 削除されていない
151                         $queryStr .=     'AND pp_product_id = ? ';
152                         $queryStr .=     'AND pp_language_id = ? ';
153                         $this->selectRecords($queryStr, array($row['pt_id'], $row['pt_language_id']), $row2);
154                         
155                         $queryStr  = 'SELECT * FROM product_image ';
156                         $queryStr .=   'WHERE im_deleted = false ';// 削除されていない
157                         $queryStr .=     'AND im_type = 2 ';            // 商品画像
158                         $queryStr .=     'AND im_id = ? ';
159                         $queryStr .=     'AND im_language_id = ? ';
160                         $this->selectRecords($queryStr, array($row['pt_id'], $row['pt_language_id']), $row3);
161                         
162                         // 商品ステータス
163                         $queryStr  = 'SELECT * FROM product_status ';
164                         $queryStr .=   'WHERE ps_deleted = false ';// 削除されていない
165                         $queryStr .=     'AND ps_id = ? ';
166                         $queryStr .=     'AND ps_language_id = ? ';
167                         $this->selectRecords($queryStr, array($row['pt_id'], $row['pt_language_id']), $row4);
168                 }
169                 return $ret;
170         }
171         /**
172          * 商品を商品ID、言語IDで取得
173          *
174          * @param int           $id                                     商品ID
175          * @param string        $langId                         言語ID
176          * @param array     $row                                レコード
177          * @param array     $row2                               商品価格
178          * @param array     $row3                               商品画像
179          * @param array     $row4                               商品ステータス
180          * @param array     $row5                               商品カテゴリー
181          * @return bool                                                 取得 = true, 取得なし= false
182          */
183         function getProductByProductId($id, $langId, &$row, &$row2, &$row3, &$row4, &$row5)
184         {
185                 //$queryStr  = 'SELECT * FROM product LEFT JOIN _login_user ON pt_create_user_id = lu_id AND lu_deleted = false ';
186                 $queryStr  = 'SELECT * FROM product LEFT JOIN product_record ON pt_id = pe_product_id AND pt_language_id = pe_language_id ';
187                 $queryStr .=   'WHERE pt_deleted = false ';     // 削除されていない
188                 $queryStr .=    'AND pt_visible = true ';               // 表示可能な商品
189                 $queryStr .=    'AND pt_id = ? ';
190                 $queryStr .=    'AND pt_language_id = ? ';
191                 $ret = $this->selectRecord($queryStr, array($id, $langId), $row);
192                 if ($ret){
193                         $queryStr  = 'SELECT * FROM product_price ';
194                         $queryStr .=   'LEFT JOIN currency ON pp_currency_id = cu_id AND pp_language_id = cu_language_id ';
195                         $queryStr .=   'WHERE pp_deleted = false ';// 削除されていない
196                         $queryStr .=     'AND pp_product_id = ? ';
197                         $queryStr .=     'AND pp_language_id = ? ';
198                         $this->selectRecords($queryStr, array($row['pt_id'], $row['pt_language_id']), $row2);
199                         
200                         $queryStr  = 'SELECT * FROM product_image ';
201                         $queryStr .=   'WHERE im_deleted = false ';// 削除されていない
202                         $queryStr .=     'AND im_type = 2 ';            // 商品画像
203                         $queryStr .=     'AND im_id = ? ';
204                         $queryStr .=     'AND im_language_id = ? ';
205                         $this->selectRecords($queryStr, array($row['pt_id'], $row['pt_language_id']), $row3);
206                         
207                         // 商品ステータス
208                         $queryStr  = 'SELECT * FROM product_status ';
209                         $queryStr .=   'WHERE ps_deleted = false ';// 削除されていない
210                         $queryStr .=     'AND ps_id = ? ';
211                         $queryStr .=     'AND ps_language_id = ? ';
212                         $this->selectRecords($queryStr, array($row['pt_id'], $row['pt_language_id']), $row4);
213                         
214                         // 商品カテゴリー
215                         $queryStr  = 'SELECT * FROM product_with_category ';
216                         $queryStr .=   'WHERE pw_product_serial = ? ';
217                         $queryStr .=  'ORDER BY pw_index ';
218                         $this->selectRecords($queryStr, array($row['pt_serial']), $row5);
219                 }
220                 return $ret;
221         }
222         /**
223          * 商品カテゴリーをカテゴリーIDで取得
224          *
225          * @param int           $id                                     カテゴリーID
226          * @param string        $langId                         言語ID
227          * @param array     $row                                レコード
228          * @return bool                                                 取得 = true, 取得なし= false
229          */
230 /*      function getCategoryByCategoryId($id, $langId, &$row)
231         {
232                 $queryStr  = 'SELECT * FROM product_category ';
233                 $queryStr .=   'WHERE pc_deleted = false ';     // 削除されていない
234                 $queryStr .=   'AND pc_id = ? ';
235                 $queryStr .=   'AND pc_language_id = ? ';
236                 $ret = $this->selectRecord($queryStr, array($id, $langId), $row);
237                 return $ret;
238         }*/
239         /**
240          * サブ商品カテゴリーを取得
241          *
242          * @param int           $id                     カテゴリーID
243          * @param string        $langId         言語ID
244          * @param array  $rows                  取得レコード
245          * @return bool                                 true=取得、false=取得せず
246          */
247         function getChildCategory($id, $langId, &$rows)
248         {
249                 $queryStr  = 'SELECT * FROM product_category ';
250                 $queryStr .=   'WHERE pc_deleted = false ';     // 削除されていない
251                 $queryStr .=     'AND pc_parent_id = ? ';
252                 $queryStr .=     'AND pc_language_id = ? ';
253                 $queryStr .=   'ORDER BY pc_sort_order';
254                 $retValue = $this->selectRecords($queryStr, array($id, $langId), $rows);
255                 return $retValue;
256         }
257         /**
258          * 画像情報を取得
259          *
260          * @param string        $type                   画像タイプ
261          * @param array     $row                                レコード
262          * @return bool                                                 取得 = true, 取得なし= false
263          */
264         function getProductImageInfo($type, &$row)
265         {
266                 $queryStr  = 'SELECT * FROM image_size ';
267                 $queryStr .=   'WHERE is_id = ? ';
268                 $ret = $this->selectRecord($queryStr, array($type), $row);
269                 return $ret;
270         }
271         /**
272          * 単位情報を取得
273          *
274          * @param string        $type                           単位タイプ
275          * @param string        $lang                           言語
276          * @param array     $row                                レコード
277          * @return bool                                                 取得 = true, 取得なし= false
278          */
279         function getUnitTypeRecord($type, $lang, &$row)
280         {
281                 $queryStr = 'SELECT * FROM unit_type ';
282                 $queryStr .=  'WHERE ut_id = ? AND ut_language_id = ? ';
283                 $ret = $this->selectRecord($queryStr, array($type, $lang), $row);
284                 return $ret;
285         }
286 }
287 ?>