7 * LICENSE: This source file is licensed under the terms of the GNU General Public License.
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
16 require_once($gEnvManager->getDbPath() . '/baseDb.php');
18 class ec_dispDb extends BaseDb
23 * @param string $categoryId 商品カテゴリーID
24 * @param string $lang 言語
25 * @param int $limit 取得する項目数
26 * @param int $offset 取得する先頭位置(0~)
27 * @param function $callback コールバック関数
30 function getProductByCategoryId($categoryId, $lang, $limit, $offset, $callback)
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 . ') ';
39 $serialArray = array();
40 $ret = $this->selectRecords($queryStr, array($lang), $serialRows);
42 for ($i = 0; $i < count($serialRows); $i++){
43 $serialArray[] = $serialRows[$i]['pt_serial'];
45 } else { // データがない場合は終了
48 $serialStr = implode(',', $serialArray);
49 if (empty($serialStr)) $serialStr = '0'; // 0レコードのときはダミー値を設定
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);
59 * @param string $categoryId 商品カテゴリーID
60 * @param string $lang 言語
63 function getProductCountByCategoryId($categoryId, $lang)
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));
76 * @param array $keywords 検索キーワード
77 * @param string $lang 言語
78 * @param int $limit 取得する項目数
79 * @param int $offset 取得する先頭位置(0~)
80 * @param function $callback コールバック関数
83 function getProductByKeyword($keywords, $lang, $limit, $offset, $callback)
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 '; // 表示可能な商品
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 . '%\') ';
101 $queryStr .= 'ORDER BY pt_sort_order limit ' . $limit . ' offset ' . $offset;
102 $this->selectLoop($queryStr, $params, $callback, null);
107 * @param array $keywords 検索キーワード
108 * @param string $lang 言語
111 function getProductCountByKeyword($keywords, $lang)
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 '; // 表示可能な商品
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 . '%\') ';
129 return $this->selectRecordCount($queryStr, $params);
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
141 function getProductBySerial($serial, &$row, &$row2, &$row3, &$row4)
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);
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);
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);
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);
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
183 function getProductByProductId($id, $langId, &$row, &$row2, &$row3, &$row4, &$row5)
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);
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);
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);
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);
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);
225 * @param int $id カテゴリーID
226 * @param string $langId 言語ID
227 * @param array $row レコード
228 * @return bool 取得 = true, 取得なし= false
230 /* function getCategoryByCategoryId($id, $langId, &$row)
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);
242 * @param int $id カテゴリーID
243 * @param string $langId 言語ID
244 * @param array $rows 取得レコード
245 * @return bool true=取得、false=取得せず
247 function getChildCategory($id, $langId, &$rows)
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);
260 * @param string $type 画像タイプ
261 * @param array $row レコード
262 * @return bool 取得 = true, 取得なし= false
264 function getProductImageInfo($type, &$row)
266 $queryStr = 'SELECT * FROM image_size ';
267 $queryStr .= 'WHERE is_id = ? ';
268 $ret = $this->selectRecord($queryStr, array($type), $row);
274 * @param string $type 単位タイプ
275 * @param string $lang 言語
276 * @param array $row レコード
277 * @return bool 取得 = true, 取得なし= false
279 function getUnitTypeRecord($type, $lang, &$row)
281 $queryStr = 'SELECT * FROM unit_type ';
282 $queryStr .= 'WHERE ut_id = ? AND ut_language_id = ? ';
283 $ret = $this->selectRecord($queryStr, array($type, $lang), $row);