OSDN Git Service

初回コミット(v2.6.17.1)
[magic3/magic3.git] / widgets / custom_search / include / db / custom_searchDb.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    カスタム検索
10  * @author     株式会社 毎日メディアサービス
11  * @copyright  Copyright 2010-2013 株式会社 毎日メディアサービス.
12  * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
13  * @version    SVN: $Id: custom_searchDb.php 5969 2013-04-29 13:16:04Z fishbone $
14  * @link       http://www.m-media.co.jp
15  */
16 require_once($gEnvManager->getDbPath() . '/baseDb.php');
17
18 class custom_searchDb extends BaseDb
19 {
20         /**
21          * すべてのカテゴリ種別を取得
22          *
23          * @param string  $langId               言語ID
24          * @param array  $rows                  取得レコード
25          * @return                                              true=取得、false=取得せず
26          */
27         function getAllCategory($langId, &$rows)
28         {
29                 // カテゴリ情報を取得
30                 $queryStr  = 'SELECT * FROM user_content_category ';
31                 $queryStr .=   'WHERE ua_deleted = false ';             // 削除されていない
32                 $queryStr .=     'AND ua_item_id = ? ';
33                 $queryStr .=     'AND ua_language_id = ? ';
34                 $queryStr .=   'ORDER BY ua_index';
35                 $retValue = $this->selectRecords($queryStr, array(''/*カテゴリ情報のみ*/, $langId), $rows);
36                 return $retValue;
37         }
38         /**
39          * メニュー作成用のカテゴリ一覧を取得
40          *
41          * @param string  $langId                       言語ID
42          * @param array   $categoryArray        取得するカテゴリID
43          * @param array  $rows                          取得レコード
44          * @return                                                      true=取得、false=取得せず
45          */
46         function getAllCategoryForMenu($langId, $categoryArray, &$rows)
47         {
48                 if (count($categoryArray) <= 0) return false;
49                 
50                 // CASE文作成
51                 $categoryId = '';
52                 $caseStr = 'CASE ua_id ';
53                 for ($i = 0; $i < count($categoryArray); $i++){
54                         $id = '\'' . addslashes($categoryArray[$i]) . '\'';
55                         $caseStr .= 'WHEN ' . $id . ' THEN ' . $i . ' ';
56                         $categoryId .= $id . ',';
57                 }
58                 $caseStr .= 'END AS no,';
59                 $categoryId = rtrim($categoryId, ',');
60                 // タイトルを最後にする
61                 $caseStr .=   'CASE ua_item_id ';
62                 $caseStr .=     'WHEN \'\' THEN 1 ';
63                 $caseStr .=     'ELSE 0 ';
64                 $caseStr .=   'END AS type ';
65                 
66                 $queryStr  = 'SELECT *, ' . $caseStr . ' FROM user_content_category ';
67                 $queryStr .=   'WHERE ua_deleted = false ';             // 削除されていない
68                 $queryStr .=     'AND ua_language_id = ? ';
69                 $queryStr .=     'AND ua_id in (' . $categoryId . ') ';
70                 $queryStr .=   'ORDER BY no, type, ua_index';
71                 $retValue = $this->selectRecords($queryStr, array($langId), $rows);
72                 return $retValue;
73         }
74         /**
75          * コンテンツの項目数またはコンテンツを取得(表示用)
76          *
77          * @param int           $limit                          取得する項目数(0=項目数取得、0以外=レコードを取得)
78          * @param int           $page                           取得するページ(1~)
79          * @param array         $keywords                       検索キーワード
80          * @param array     $categoryInfo               絞り込み用カテゴリ
81          * @param string        $langId                         言語
82          * @param bool          $isAll                          すべてのデータを取得するか、ユーザ制限のないデータを取得するかを指定
83          * @param bool          $isTargetContent        汎用コンテンツを検索対象とするかどうか
84          * @param bool          $isTargetUser           ユーザ作成コンテンツを検索対象とするかどうか
85          * @param bool          $isTargetBlog           ブログ記事を検索対象とするかどうか
86          * @param bool          $isTargetProduct                商品情報を検索対象とするかどうか
87          * @param bool          $isTargetEvent          イベント情報を検索対象とするかどうか
88          * @param bool          $isTargetBbs            BBSを検索対象とするかどうか
89          * @param bool          $isTargetPhoto          フォトギャラリーを検索対象とするかどうか
90          * @param function      $callback                       コールバック関数
91          * @return int,bool                                             $limitが0のときintで項目数、$limitが0以外のときはbool(true=1行以上レコード取得、false=レコードなし)
92          */
93         function searchContentsByKeyword($limit, $page, $keywords, $categoryInfo, $langId, $isAll, $isTargetContent, $isTargetUser, $isTargetBlog, 
94                                                                         $isTargetProduct, $isTargetEvent, $isTargetBbs, $isTargetPhoto, $callback = NULL)
95         {
96                 $offset = $limit * ($page -1);
97                 if ($offset < 0) $offset = 0;
98                 $initDt = $this->gEnv->getInitValueOfTimestamp();               // 日時初期化値
99                 $now = date("Y/m/d H:i:s");     // 現在日時
100                 $params = array();              // パラメータ初期化
101                 $queryStr = '';
102                 
103                 // ##### 汎用コンテンツの検索条件 #####
104                 if (!empty($isTargetContent)){
105                         $contentType = '';
106                         $queryStr .= 'SELECT DISTINCT \'content\' AS type, cn_id AS id, cn_name AS name, cn_create_dt AS dt, 0 AS group_id ';
107                         $queryStr .= 'FROM content ';
108                         $queryStr .=  'WHERE cn_visible = true ';
109                         $queryStr .=    'AND cn_deleted = false ';              // 削除されていない
110                         $queryStr .=    'AND cn_type = ? ';$params[] = $contentType;
111                         $queryStr .=    'AND cn_language_id = ? ';$params[] = $langId;
112                         if (!$all) $queryStr .=    'AND cn_user_limited = false ';              // ユーザ制限のないデータ
113
114                         // タイトルと記事を検索
115                         if (!empty($keywords)){
116                                 for ($i = 0; $i < count($keywords); $i++){
117                                         $keyword = addslashes($keywords[$i]);// 「'"\」文字をエスケープ
118                                         $queryStr .=    'AND (cn_name LIKE \'%' . $keyword . '%\' ';
119                                         $queryStr .=    'OR cn_html LIKE \'%' . $keyword . '%\' ';
120                                         $queryStr .=    'OR cn_description LIKE \'%' . $keyword . '%\' ';
121                                         $queryStr .=    'OR cn_option_fields LIKE \'%' . $keyword . '%\') ';    // ユーザ定義フィールド
122                                 }
123                         }
124                 
125                         // 公開期間を指定
126                         $queryStr .=    'AND (cn_active_start_dt = ? OR (cn_active_start_dt != ? AND cn_active_start_dt <= ?)) ';
127                         $queryStr .=    'AND (cn_active_end_dt = ? OR (cn_active_end_dt != ? AND cn_active_end_dt > ?)) ';
128                         $params[] = $initDt;
129                         $params[] = $initDt;
130                         $params[] = $now;
131                         $params[] = $initDt;
132                         $params[] = $initDt;
133                         $params[] = $now;
134                 }
135                 // ##### ユーザ作成コンテンツの検索条件 #####
136                 if (!empty($isTargetUser)){
137                         // カテゴリ条件から検索対象のルームを取得
138                         $roomArray = array();
139                         if (!empty($categoryInfo)){
140                                 $allParams = array();
141                                 $allQueryStr = '';
142                                 $keys = array_keys($categoryInfo);
143                                 $categoryCount = count($keys);
144                                 for ($i = 0; $i < $categoryCount; $i++){
145                                         $qStr  = 'SELECT um_room_id FROM user_content_room_category ';
146                                         $pms = array();
147                                 
148                                         $key = $keys[$i];
149                                         $item = $categoryInfo[$key];
150                                         if (is_array($item)){           // 複数項目の場合
151                                                 $qStr .=    'WHERE um_category_id = ? AND (';
152                                                 $pms[] = $key;
153                                                 $itemCount = count($item);
154                                                 for ($j = 0; $j < $itemCount; $j++){
155                                                         $qStr .=    'um_category_item_id = ?';
156                                                         if ($j < $itemCount -1) $qStr .=    ' OR ';
157                                                         $pms[] = $item[$j];
158                                                 }
159                                                 $qStr .=    ') ';
160                                         } else {
161                                                 $qStr .=    'WHERE um_category_id = ? AND um_category_item_id = ? ';
162                                                 $pms[] = $key;
163                                                 $pms[] = $item;
164                                         }
165                                 
166                                         $allParams = array_merge($pms, $allParams);
167                                         if ($i == 0){
168                                                 $allQueryStr = $qStr;
169                                         } else {
170                                                 $allQueryStr = $qStr . ' AND um_room_id IN (' . $allQueryStr . ')';
171                                         }
172                                 }
173                                 $retValue = $this->selectRecords($allQueryStr, $allParams, $rows);
174                                 if ($retValue){
175                                         $rowCount = count($rows);
176                                         for ($i = 0; $i < $rowCount; $i++){
177                                                 $roomArray[] = $rows[$i]['um_room_id'];
178                                         }
179                                 }
180                         }
181
182                         if (!empty($queryStr)) $queryStr .= ' UNION ';
183                         $queryStr .= 'SELECT DISTINCT \'user\' AS type, uc_room_id AS id, ur_name AS name, ur_content_update_dt AS dt, ur_group_id AS group_id ';
184                         $queryStr .= 'FROM user_content LEFT JOIN user_content_room ON uc_room_id = ur_id AND ur_deleted = false ';
185                         $queryStr .= 'WHERE uc_language_id = ? ';       $params[] = $langId;
186                         $queryStr .=   'AND uc_deleted = false ';               // 削除されていない
187                         $queryStr .=   'AND uc_visible = true ';                // 公開中
188                         $queryStr .=   'AND ur_visible = true ';                // ルーム公開中
189
190                         // 検索対象のルームを制限
191                         if (!empty($categoryInfo)){             // カテゴリ制限のとき
192                                 if (count($roomArray) == 0){
193                                         $idStr = '\'/dummy/\'';                         // ダミーデータを設定
194                                 } else {
195                                         $idStr = '';
196                                         for ($i = 0; $i < count($roomArray); $i++){
197                                                 $idStr .= '\'' . addslashes($roomArray[$i]) . '\',';
198                                         }
199                                         $idStr = rtrim($idStr, ',');
200                                 }
201                                 $queryStr .=  'AND uc_room_id in (' . $idStr . ') ';
202                         }
203
204                         // コンテンツを検索
205                         if (!empty($keywords)){
206                                 for ($i = 0; $i < count($keywords); $i++){
207                                         $keyword = addslashes($keywords[$i]);// 「'"\」文字をエスケープ
208                                         $queryStr .=    'AND (uc_data LIKE \'%' . $keyword . '%\' ';            // コンテンツ実データ
209                                         $queryStr .=    'OR uc_room_id LIKE \'%' . $keyword . '%\' ';                   // ルームID
210                                         $queryStr .=    'OR ur_name LIKE \'%' . $keyword . '%\') ';                     // ルーム名
211                                 }
212                         }
213                 
214                         // 公開期間を指定
215                         $queryStr .=    'AND (uc_active_start_dt = ? OR (uc_active_start_dt != ? AND uc_active_start_dt <= ?)) ';
216                         $queryStr .=    'AND (uc_active_end_dt = ? OR (uc_active_end_dt != ? AND uc_active_end_dt > ?)) ';
217                         $params[] = $initDt;
218                         $params[] = $initDt;
219                         $params[] = $now;
220                         $params[] = $initDt;
221                         $params[] = $initDt;
222                         $params[] = $now;
223                 }
224                 // ##### ブログの検索条件 #####
225                 if (!empty($isTargetBlog)){
226                         if (!empty($queryStr)) $queryStr .= ' UNION ';
227                         $queryStr .= 'SELECT DISTINCT \'blog\' AS type, be_id AS id, be_name AS name, be_regist_dt AS dt, 0 AS group_id ';
228                         $queryStr .= 'FROM blog_entry ';
229                         $queryStr .=  'WHERE be_language_id = ? ';      $params[] = $langId;
230                         $queryStr .=    'AND be_deleted = false ';              // 削除されていない
231                         $queryStr .=    'AND be_regist_dt <= ? ';       $params[] = $now;       // 投稿日時が現在日時よりも過去のものを取得
232
233                         // タイトルと記事を検索
234                         if (!empty($keywords)){
235                                 for ($i = 0; $i < count($keywords); $i++){
236                                         $keyword = addslashes($keywords[$i]);// 「'"\」文字をエスケープ
237                                         $queryStr .=    'AND (be_name LIKE \'%' . $keyword . '%\' ';
238                                         $queryStr .=    'OR be_html LIKE \'%' . $keyword . '%\' ';
239                                         $queryStr .=    'OR be_html_ext LIKE \'%' . $keyword . '%\' ';
240                                         $queryStr .=    'OR be_description LIKE \'%' . $keyword . '%\') ';
241                                 }
242                         }
243                 
244                         // 公開期間を指定
245                         $queryStr .=    'AND (be_active_start_dt = ? OR (be_active_start_dt != ? AND be_active_start_dt <= ?)) ';
246                         $queryStr .=    'AND (be_active_end_dt = ? OR (be_active_end_dt != ? AND be_active_end_dt > ?)) ';
247                         $params[] = $initDt;
248                         $params[] = $initDt;
249                         $params[] = $now;
250                         $params[] = $initDt;
251                         $params[] = $initDt;
252                         $params[] = $now;
253                 }
254                 // ##### 商品情報の検索条件 #####
255                 if (!empty($isTargetProduct)){
256                         if (!empty($queryStr)) $queryStr .= ' UNION ';
257                         
258                         $queryStr .= 'SELECT DISTINCT \'product\' AS type, pt_id AS id, pt_name AS name, pt_create_dt AS dt, 0 AS group_id ';
259                         $queryStr .= 'FROM product ';
260                         $queryStr .= 'WHERE pt_language_id = ? '; $params[] = $langId;
261                         $queryStr .=   'AND pt_deleted = false ';               // 削除されていない
262                         $queryStr .=   'AND pt_visible = true ';                // 表示可能な商品
263                 
264                         // 商品名、商品コード、説明を検索
265                         if (!empty($keywords)){
266                                 for ($i = 0; $i < count($keywords); $i++){
267                                         $keyword = addslashes($keywords[$i]);// 「'"\」文字をエスケープ
268                                         $queryStr .=    'AND (pt_name LIKE \'%' . $keyword . '%\' ';
269                                         $queryStr .=    'OR pt_code LIKE \'%' . $keyword . '%\' ';
270                                         $queryStr .=    'OR pt_description LIKE \'%' . $keyword . '%\' ';
271                                         $queryStr .=    'OR pt_description_short LIKE \'%' . $keyword . '%\') ';
272                                 }
273                         }
274                 }
275                 // ##### イベント情報の検索条件 #####
276                 if (!empty($isTargetEvent)){
277                         if (!empty($queryStr)) $queryStr .= ' UNION ';
278                         $queryStr .= 'SELECT DISTINCT \'event\' AS type, ee_id AS id, ee_name AS name, ee_start_dt AS dt, 0 AS group_id ';
279                         $queryStr .= 'FROM event_entry ';
280                         $queryStr .=   'WHERE ee_language_id = ? ';     $params[] = $langId;
281                         $queryStr .=     'AND ee_deleted = false ';             // 削除されていない
282                         
283                         // 名前、予定、結果、概要、管理者用備考、場所、連絡先を検索
284                         if (!empty($keywords)){
285                                 for ($i = 0; $i < count($keywords); $i++){
286                                         $keyword = addslashes($keywords[$i]);// 「'"\」文字をエスケープ
287                                         $queryStr .=    'AND (ee_name LIKE \'%' . $keyword . '%\' ';
288                                         $queryStr .=    'OR ee_html LIKE \'%' . $keyword . '%\' ';
289                                         $queryStr .=    'OR ee_html_ext LIKE \'%' . $keyword . '%\' ';
290                                         $queryStr .=    'OR ee_summary LIKE \'%' . $keyword . '%\' ';
291                                         $queryStr .=    'OR ee_admin_note LIKE \'%' . $keyword . '%\' ';
292                                         $queryStr .=    'OR ee_place LIKE \'%' . $keyword . '%\' ';
293                                         $queryStr .=    'OR ee_contact LIKE \'%' . $keyword . '%\') ';
294                                 }
295                         }
296                 }
297                 // ##### BBSの検索条件 #####
298                 if (!empty($isTargetBbs)){
299                         if (!empty($queryStr)) $queryStr .= ' UNION ';
300                         $queryStr .= 'SELECT DISTINCT \'bbs\' AS type, th_id AS id, th_subject AS name, th_dt AS dt, 0 AS group_id ';
301                         $queryStr .= 'FROM bbs_2ch_thread_message LEFT JOIN bbs_2ch_thread ON te_thread_id = th_id AND th_deleted = false ';
302                         $queryStr .=   'WHERE te_deleted = false ';             // 削除されていない
303                 
304                         // 「'"\」文字をエスケープ
305                         if (!empty($keywords)){
306                                 for ($i = 0; $i < count($keywords); $i++){
307                                         $keyword = addslashes($keywords[$i]);// 「'"\」文字をエスケープ
308                                         $queryStr .=     'AND (te_user_name LIKE \'%' . $keyword . '%\' ';
309                                         $queryStr .=     'OR te_email LIKE \'%' . $keyword . '%\' ';
310                                         $queryStr .=     'OR te_message LIKE \'%' . $keyword . '%\') ';
311                                 }
312                         }
313                 }
314                 // ##### フォト情報の検索条件 #####
315                 if (!empty($isTargetPhoto)){
316                         if (!empty($queryStr)) $queryStr .= ' UNION ';
317                         $queryStr .= 'SELECT DISTINCT \'photo\' AS type, ht_public_id AS id, ht_name AS name, ht_regist_dt AS dt, 0 AS group_id ';
318                         $queryStr .= 'FROM photo LEFT JOIN _login_user ON ht_owner_id = lu_id AND lu_deleted = false ';
319                         $queryStr .=   'WHERE ht_deleted = false ';             // 未削除
320                         $queryStr .=     'AND ht_visible = true ';              // 公開中
321                         
322                         if (!empty($keywords)){
323                                 for ($i = 0; $i < count($keywords); $i++){
324                                         $keyword = addslashes($keywords[$i]);           // 「'"\」文字をエスケープ
325                                         $queryStr .=    'AND (ht_public_id LIKE \'%' . $keyword . '%\' ';               // 公開用画像ID
326                                         $queryStr .=    'OR ht_name LIKE \'%' . $keyword . '%\' ';              // 画像タイトル
327                                         $queryStr .=    'OR ht_camera LIKE \'%' . $keyword . '%\' ';            // カメラ
328                                         $queryStr .=    'OR ht_location LIKE \'%' . $keyword . '%\' ';          // 撮影場所
329                                         $queryStr .=    'OR ht_description LIKE \'%' . $keyword . '%\' ';               // 説明
330                                         $queryStr .=    'OR ht_summary LIKE \'%' . $keyword . '%\' ';           // 概要
331                                         $queryStr .=    'OR ht_keyword LIKE \'%' . $keyword . '%\' ';           // キーワード
332                                         $queryStr .=    'OR lu_name LIKE \'%' . $keyword . '%\') ';     // 撮影者
333                                 }
334                         }
335                 }
336                 if (empty($limit)){                     // 項目数取得の場合
337                         $ret = $this->selectRecordCount($queryStr, $params);
338                 } else {
339                         // コンテンツ更新の最新のデータから取得
340                         $queryStr .=  'ORDER BY dt desc limit ' . $limit . ' offset ' . $offset;
341                         $ret = $this->selectLoop($queryStr, $params, $callback);
342                 }
343                 return $ret;
344         }
345         /**
346          * デフォルトのタブ定義を取得
347          *
348          * @param string        $lang                           言語
349          * @param int       $groupId                    グループID
350          * @param array     $row                                レコード
351          * @return bool                                                 取得 = true, 取得なし= false
352          */
353         function getDefaultTab($lang, $groupId, &$row)
354         {
355                 $queryStr = 'SELECT * FROM user_content_tab ';
356                 $queryStr .=  'WHERE ub_deleted = false ';              // 削除されていない
357                 $queryStr .=    'AND ub_visible = true ';               // 表示中
358                 $queryStr .=    'AND ub_language_id = ? ';
359                 $queryStr .=    'AND ub_group_id = ? ';
360                 $queryStr .=  'ORDER BY ub_index';
361                 $ret = $this->selectRecord($queryStr, array($lang, $groupId), $row);
362                 return $ret;
363         }
364         /**
365          * ルームIDですべてのコンテンツを取得
366          *
367          * @param string  $roomId               ルームID
368          * @param string  $langId               言語ID
369          * @param array   $rows                 取得レコード
370          * @return bool                                 取得 = true, 取得なし= false
371          */
372         function getAllContentsByRoomId($roomId, $langId, &$rows)
373         {
374                 if (empty($roomId) || empty($langId)) return false;
375                 
376                 $queryStr  = 'SELECT * FROM user_content LEFT JOIN user_content_item ON uc_id = ui_id AND ui_deleted = false ';
377                 $queryStr .=   'WHERE uc_deleted = false ';     // 削除されていない
378                 $queryStr .=     'AND uc_room_id = ? ';
379                 $queryStr .=     'AND uc_language_id = ? ';
380                 $retValue = $this->selectRecords($queryStr, array($roomId, $langId), $rows);
381                 return $retValue;
382         }
383         /**
384          * コンテンツ項目をコンテンツIDで取得
385          *
386          * @param string        $contentType            コンテンツタイプ
387          * @param string        $contentId                      コンテンツID
388          * @param string        $langId                         言語ID
389          * @param array     $row                                レコード
390          * @return bool                                                 取得 = true, 取得なし= false
391          */
392         function getContentByContentId($contentType, $contentId, $langId, &$row)
393         {
394                 $queryStr  = 'SELECT * FROM content ';
395                 $queryStr .=   'WHERE cn_deleted = false ';     // 削除されていない
396                 $queryStr .=    'AND cn_type = ? ';
397                 $queryStr .=   'AND cn_id = ? ';
398                 $queryStr .=   'AND cn_language_id = ? ';
399                 $ret = $this->selectRecord($queryStr, array($contentType, $contentId, $langId), $row);
400                 return $ret;
401         }
402         /**
403          * ブログ記事をエントリーIDで取得
404          *
405          * @param string        $id                                     エントリーID
406          * @param string        $langId                         言語ID
407          * @param array     $row                                レコード
408          * @return bool                                                 取得 = true, 取得なし= false
409          */
410         function getEntryByEntryId($id, $langId, &$row)
411         {
412                 $queryStr  = 'SELECT * FROM blog_entry ';
413                 $queryStr .=   'WHERE be_deleted = false ';     // 削除されていない
414                 $queryStr .=   'AND be_id = ? ';
415                 $queryStr .=   'AND be_language_id = ? ';
416                 $ret = $this->selectRecord($queryStr, array($id, $langId), $row);
417                 return $ret;
418         }
419         /**
420          * 商品を商品ID、言語IDで取得
421          *
422          * @param int           $id                                     商品ID
423          * @param string        $langId                         言語ID
424          * @param array     $row                                レコード
425          * @return bool                                                 取得 = true, 取得なし= false
426          */
427         function getProductByProductId($id, $langId, &$row)
428         {
429                 $queryStr  = 'SELECT * FROM product LEFT JOIN product_record ON pt_id = pe_product_id AND pt_language_id = pe_language_id ';
430                 $queryStr .=   'WHERE pt_deleted = false ';     // 削除されていない
431                 $queryStr .=    'AND pt_visible = true ';               // 表示可能な商品
432                 $queryStr .=    'AND pt_id = ? ';
433                 $queryStr .=    'AND pt_language_id = ? ';
434                 $ret = $this->selectRecord($queryStr, array($id, $langId), $row);
435                 return $ret;
436         }
437         /**
438          * イベント情報を取得
439          *
440          * @param int           $id                                     イベントID
441          * @param string        $langId                         言語
442          * @param array     $row                                レコード
443          * @return bool                                                 取得 = true, 取得なし= false
444          */
445         function getEvent($id, $langId, &$row)
446         {
447                 $queryStr  = 'SELECT * FROM event_entry ';
448                 $queryStr .=   'WHERE ee_deleted = false ';     // 削除されていない
449                 $queryStr .=   'AND ee_id = ? ';
450                 $queryStr .=   'AND ee_language_id = ? ';
451                 $ret = $this->selectRecord($queryStr, array($id, $langId), $row);
452                 return $ret;
453         }
454         /**
455          * BBSスレッドを取得
456          *
457          * @param array     $threadId                   スレッドID
458          * @param array     $row                                レコード
459          * @return bool                                                 取得 = true, 取得なし= false
460          */
461         function getBbsThread($threadId, &$row)
462         {
463                 $queryStr  = 'SELECT * FROM bbs_2ch_thread_message ';
464                 $queryStr .=   'WHERE te_thread_id = ? ';
465                 $queryStr .=     'AND te_index = 1 ';
466                 $ret = $this->selectRecord($queryStr, array($threadId), $row);
467                 return $ret;
468         }
469         /**
470          * フォト情報を取得
471          *
472          * @param int           $id                                     公開画像ID
473          * @param string        $langId                         言語
474          * @param array     $row                                レコード
475          * @return bool                                                 取得 = true, 取得なし= false
476          */
477         function getPhoto($id, $langId, &$row)
478         {
479                 $queryStr  = 'SELECT * FROM photo LEFT JOIN _login_user ON ht_owner_id = lu_id AND lu_deleted = false ';
480                 $queryStr .=   'WHERE ht_deleted = false ';
481                 $queryStr .=     'AND ht_public_id = ? ';
482                 $queryStr .=     'AND ht_language_id = ? ';
483                 $ret = $this->selectRecord($queryStr, array($id, $langId), $row);
484                 return $ret;
485         }
486 }
487 ?>