ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/trunk/webapp/lib/db/read/review.php @ 284

Last change on this file since 284 was 284, checked in by ogawa, 14 years ago

CS

File size: 15.6 KB
Line 
1<?php
2/**
3 * @copyright 2005-2006 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7function db_review_c_review_list4member($c_member_id, $count = 10)
8{
9    $sql = 'SELECT rev.c_review_id, rev.title, com.r_datetime' .
10        ' FROM c_review_comment AS com LEFT JOIN c_review AS rev USING(c_review_id)' .
11        ' WHERE com.c_member_id = ? ORDER BY com.r_datetime DESC';
12    $params = array(intval($c_member_id));
13    return db_get_all_limit($sql, 0, $count, $params);
14}
15
16function p_h_home_c_friend_review_list4c_member_id($c_member_id, $limit)
17{
18    $friends = db_friend_c_member_id_list($c_member_id);
19    $ids = implode(',', array_map('intval', $friends));
20
21    $sql = 'SELECT * FROM c_review INNER JOIN c_review_comment USING (c_review_id)' .
22            ' WHERE c_review_comment.c_member_id IN ('.$ids.')' .
23            ' ORDER BY c_review_comment.r_datetime DESC';
24    $list = db_get_all_limit($sql, 0, $limit);
25    foreach ($list as $key => $value) {
26        $list[$key] += db_common_c_member4c_member_id_LIGHT($value['c_member_id']);
27    }
28    return $list;
29}
30
31function p_h_home_c_friend_review_list_more4c_member_id($c_member_id, $page, $page_size)
32{
33    $sql =  "SELECT cm.nickname, cr.c_review_id, cr.title, crc.r_datetime" .
34            " FROM  c_member AS cm, c_friend AS cf, c_review AS cr, c_review_comment AS crc" .
35            " WHERE cr.c_review_id = crc.c_review_id " .
36            " AND cf.c_member_id_to = crc.c_member_id " .
37            " AND cf.c_member_id_to = cm.c_member_id " .
38            " AND cf.c_member_id_from = ?".
39            " ORDER BY crc.r_datetime DESC";
40    $params = array(intval($c_member_id));
41    $list = db_get_all_page($sql, $page, $page_size, $params);
42
43    $sql =  "SELECT COUNT(*)" .
44            " FROM  c_friend AS cf, c_review_comment AS crc" .
45            " WHERE cf.c_member_id_to = crc.c_member_id" .
46            " AND cf.c_member_id_from = ?";
47    $total_num = db_get_one($sql, $params);
48
49    if ($total_num != 0) {
50        $total_page_num = ceil($total_num / $page_size);
51        if ($page >= $total_page_num) {
52            $next = false;
53        } else {
54            $next = true;
55        }
56        if ($page <= 1) {
57            $prev = false;
58        } else {
59            $prev = true;
60        }
61    }
62
63    $start_num = ($page - 1) * $page_size + 1 ;
64    $end_num   = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
65
66    return array($list, $prev, $next, $total_num, $start_num, $end_num);
67}
68
69function p_c_home_new_commu_review4c_commu_id($c_commu_id , $limit)
70{
71    $sql = "SELECT ccr.c_review_id, cr.title, ccr.r_datetime" .
72            " FROM c_commu_review AS ccr , c_review AS cr" .
73            " WHERE ccr.c_review_id = cr.c_review_id" .
74            " AND ccr.c_commu_id = ?".
75            " ORDER BY ccr.r_datetime DESC";
76    $params = array(intval($c_commu_id));
77    return db_get_all_limit($sql, 0, $limit, $params);
78}
79
80function p_h_review_add_category_disp()
81{
82    $sql = 'SELECT c_review_category_id, category_disp FROM c_review_category';
83    return db_get_assoc($sql);
84}
85
86function p_h_review_add_search_result($keyword, $category_id, $page)
87{
88    $sql = 'SELECT category FROM c_review_category WHERE c_review_category_id = ?';
89    $params = array(intval($category_id));
90    if (!$category = db_get_one($sql, $params)) {
91        return null;
92    }
93
94    include_once 'Services/Amazon.php';
95    $amazon =& new Services_Amazon(AMAZON_TOKEN, AMAZON_AFFID, AMAZON_LOCALE, AMAZON_BASEURL);
96    $products = $amazon->searchKeyword($keyword, $category, $page);
97    if (PEAR::isError($products)) {
98        return null;
99    }
100    if (empty($products['totalresults'])) {
101        return null;
102    }
103
104    foreach ($products as $key => $value) {
105        if (is_array($value['authors'])) {
106            $authors = array_unique($value['authors']);
107            $products[$key]['author'] = implode(', ', $authors);
108        }
109        if (is_array($value['artists'])) {
110            $artists = array_unique($value['artists']);
111            $products[$key]['artist'] = implode(', ', $artists);
112        }
113    }
114
115    $product_page = $products['page'];
116    $product_pages = $products['pages'];
117    $total_num = $products['totalresults'];
118    unset($products[0]);
119    unset($products['page']);
120    unset($products['pages']);
121    unset($products['totalresults']);
122
123    return array($products, $product_page, $product_pages, $total_num);
124}
125
126function p_h_review_write_product4asin($asin)
127{
128    include_once 'Services/Amazon.php';
129    $amazon =& new Services_Amazon(AMAZON_TOKEN, AMAZON_AFFID, AMAZON_LOCALE, AMAZON_BASEURL);
130    $keyword = mb_convert_encoding($keyword, "UTF-8", "auto");
131
132    $result = $amazon->searchAsin($asin);
133    $product  =$result[1];
134    if ($result[1]['authors']) {
135        $product['author'] = implode(',', $result[1]['authors']);
136    }
137
138    foreach ($product as $key => $value) {
139        $product[$key] = mb_convert_encoding($value, 'UTF-8', 'auto');
140    }
141
142    return $product;
143}
144
145/**
146 * orderby:
147 *      r_datetime  => 作成順
148 *      r_num       => 登録数順
149 */
150function p_h_review_search_result4keyword_category($keyword, $category_id , $orderby, $page = 1, $page_size = 30)
151{
152    $from = " FROM c_review INNER JOIN c_review_comment USING (c_review_id)";
153
154    $where = ' WHERE 1';
155    $params = array();
156    if ($keyword) {
157        $where .= ' AND c_review.title LIKE ?';
158        $params[] = '%'.check_search_word($keyword).'%';
159    }
160    if ($category_id) {
161        $where .= ' AND c_review.c_review_category_id = ?';
162        $params[] = intval($category_id);
163    }
164
165    switch ($orderby) {
166    case "r_datetime":
167    default:
168        $order = " ORDER BY r_datetime DESC";
169        break;
170    case "r_num":
171        $order = " ORDER BY write_num DESC, r_datetime DESC";
172        break;
173    }
174
175    $sql = "SELECT" .
176            " c_review.*" .
177            ", MAX(c_review_comment.r_datetime) as r_datetime" .
178            ", COUNT(c_review_comment.c_review_comment_id) AS write_num" .
179        $from .
180        $where .
181        " GROUP BY c_review.c_review_id" .
182        $order;
183
184    $lst = db_get_all_page($sql, $page, $page_size, $params);
185
186    //$lstに書き込み数を追加 + レビュー書き込み内容と日付を追加
187    foreach ($lst as $key => $value) {
188        $sql = "SELECT body FROM c_review_comment" .
189            " WHERE c_review_id = ?" .
190            " ORDER BY r_datetime DESC";
191        $p2 = array(intval($value['c_review_id']));
192        $lst[$key]['body'] = db_get_one($sql, $p2);
193    }
194
195    $sql = "SELECT COUNT(DISTINCT c_review.c_review_id)" . $from . $where;
196    $total_num = db_get_one($sql, $params);
197
198    if ($total_num != 0) {
199        $total_page_num =  ceil($total_num / $page_size);
200        if ($page >= $total_page_num) {
201            $next = false;
202        } else {
203            $next = true;
204        }
205        if ($page <= 1) {
206            $prev = false;
207        } else {
208            $prev = true;
209        }
210    }
211
212    $start_num = ($page - 1) * $page_size + 1 ;
213    $end_num   = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
214
215    return array($lst, $prev, $next, $total_num, $start_num, $end_num);
216}
217
218function p_h_review_list_product_c_review4c_review_id($c_review_id)
219{
220    $sql = 'SELECT * FROM c_review AS cr, c_review_category AS crc' .
221           ' WHERE cr.c_review_category_id = crc.c_review_category_id' .
222           ' AND c_review_id = ?';
223    $params = array(intval($c_review_id));
224    return db_get_row($sql, $params);
225}
226
227function p_h_review_list_product_c_review_list4c_review_id($c_review_id, $page, $page_size=30)
228{
229    $sql = "SELECT crc.*, cm.c_member_id, cm.nickname, cm.image_filename" .
230           " FROM c_review_comment AS crc, c_member AS cm" .
231           " WHERE crc.c_member_id = cm.c_member_id" .
232           " AND c_review_id = ?" .
233           " ORDER BY r_datetime desc";
234    $params = array(intval($c_review_id));
235    $list = db_get_all_page($sql, $page, $page_size, $params);
236
237    $total_num = do_common_count_c_review_comment4c_review_id($c_review_id);
238    if ($total_num != 0) {
239        $total_page_num =  ceil($total_num / $page_size);
240        if ($page >= $total_page_num) {
241            $next = false;
242        } else {
243            $next = true;
244        }
245        if ($page <= 1) {
246            $prev = false;
247        } else {
248            $prev = true;
249        }
250    }
251
252    $start_num = ($page - 1) * $page_size + 1 ;
253    $end_num   = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
254
255    return array($list, $prev, $next, $total_num, $start_num, $end_num);
256}
257
258function p_fh_review_list_product_c_review_list4c_member_id($c_member_id, $page, $page_size=30)
259{
260    $sql = "SELECT crc.*, cr.*, crc2.category_disp" .
261            " FROM c_review_comment AS crc, c_review AS cr, c_review_category AS crc2" .
262            " WHERE crc.c_review_id = cr.c_review_id" .
263            " AND cr.c_review_category_id = crc2.c_review_category_id" .
264            " AND crc.c_member_id = ?" .
265            " ORDER BY crc.r_datetime DESC";
266    $params = array(intval($c_member_id));
267    $list = db_get_all_page($sql, $page, $page_size, $params);
268
269    foreach ($list as $key => $value) {
270        $list[$key]['write_num'] = do_common_count_c_review_comment4c_review_id($value['c_review_id']);
271    }
272
273    $sql = "SELECT COUNT(*) FROM c_review_comment WHERE c_member_id = ?";
274    $params = array(intval($c_member_id));
275    $total_num = db_get_one($sql, $params);
276
277    if ($total_num != 0) {
278        $total_page_num =  ceil($total_num / $page_size);
279        if ($page >= $total_page_num) {
280            $next = false;
281        } else {
282            $next = true;
283        }
284        if ($page <= 1) {
285            $prev = false;
286        } else {
287            $prev = true;
288        }
289    }
290
291    $start_num = ($page - 1) * $page_size + 1 ;
292    $end_num   = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
293
294    return array($list, $prev, $next, $total_num, $start_num, $end_num);
295}
296
297function p_h_review_add_write_c_review_comment4asin_c_member_id($asin, $c_member_id)
298{
299    $sql = "SELECT * FROM c_review AS cr, c_review_comment AS crc" .
300            " WHERE cr.c_review_id = crc.c_review_id" .
301            " AND cr.asin = ?" .
302            " AND crc.c_member_id = ?";
303    $params = array($asin, intval($c_member_id));
304    return db_get_row($sql, $params);
305}
306
307function p_h_review_clip_list_h_review_clip_list4c_member_id($c_member_id, $page, $page_size=30)
308{
309    $sql = "SELECT * FROM c_review_clip AS crc, c_review AS cr" .
310            " WHERE crc.c_review_id = cr.c_review_id" .
311            " AND c_member_id = ?" .
312            " ORDER BY crc.r_datetime";
313    $params = array(intval($c_member_id));
314    $list = db_get_all_page($sql, $page, $page_size, $params);
315
316    //カテゴリの表示名を取得
317    $category_disp = p_h_review_add_category_disp();
318
319    //$lstに書き込み数 + カテゴリ名 を追加
320    foreach ($list as $key => $value) {
321        $list[$key]['write_num'] = do_common_count_c_review_comment4c_review_id($value['c_review_id']);
322        $list[$key]['category_disp'] = $category_disp[$value['c_review_category_id']];
323    }
324
325    $sql = "SELECT COUNT(*) FROM c_review_clip WHERE c_member_id = ?";
326    $params = array(intval($c_member_id));
327    $total_num = db_get_one($sql, $params);
328
329    if ($total_num != 0) {
330        $total_page_num =  ceil($total_num / $page_size);
331        if ($page >= $total_page_num) {
332            $next = false;
333        } else {
334            $next = true;
335        }
336        if ($page <= 1) {
337            $prev = false;
338        } else {
339            $prev = true;
340        }
341    }
342
343    $start_num = ($page - 1) * $page_size + 1 ;
344    $end_num   = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
345
346    return array($list, $prev, $next, $total_num, $start_num, $end_num);
347}
348
349function p_c_member_review_c_member_review4c_commu_id($c_commu_id, $page, $page_size=20)
350{
351    $sql = " SELECT cr.*, ccr.*, crc.category_disp " .
352            " FROM c_commu_review as ccr, c_review as cr, c_review_category as crc" .
353            " WHERE ccr.c_review_id = cr.c_review_id" .
354            " AND cr.c_review_category_id = crc.c_review_category_id" .
355            " AND ccr.c_commu_id =  ?" .
356            " ORDER BY ccr.r_datetime";
357    $params = array(intval($c_commu_id));
358    $list = db_get_all_page($sql, $page, $page_size, $params);
359
360    $sql = "SELECT COUNT(*) FROM c_commu_review WHERE c_commu_id = ?";
361    $total_num = db_get_one($sql, $params);
362
363    if ($total_num != 0) {
364        $total_page_num = ceil($total_num / $page_size);
365        if ($page >= $total_page_num) {
366            $next = false;
367        } else {
368            $next = true;
369        }
370        if ($page <= 1) {
371            $prev = false;
372        } else {
373            $prev = true;
374        }
375    }
376
377    $start_num = ($page - 1) * $page_size + 1 ;
378    $end_num   = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size ;
379
380    return array($list, $prev, $next, $total_num, $start_num, $end_num);
381}
382
383function c_member_review_add_confirm_c_member_review4c_review_id($c_review_id, $c_member_id)
384{
385    $c_review_id_str = implode(',', array_map('intval', $c_review_id));
386    $sql = "SELECT * FROM c_review as cr, c_review_comment as crc , c_review_category as crc2 " .
387            " WHERE cr.c_review_id = crc.c_review_id " .
388            " AND cr.c_review_category_id = crc2.c_review_category_id " .
389            " AND crc.c_member_id = ?".
390            " AND cr.c_review_id IN (".$c_review_id_str.")";
391    $params = array(intval($c_member_id));
392    return db_get_all($sql, $params);
393}
394
395function do_c_review_add_c_review_category_id4category($category)
396{
397    $sql = "SELECT c_review_category_id FROM c_review_category WHERE category = ?";
398    $params = array($category);
399    return db_get_one($sql, $params);
400}
401
402function do_h_review_edit_c_review_comment4c_review_comment_id_c_member_id($c_review_comment_id, $c_member_id)
403{
404    $sql = "SELECT * FROM c_review_comment " .
405            " WHERE c_review_comment_id = ?" .
406            " AND c_member_id = ?";
407    $params = array(intval($c_review_comment_id), intval($c_member_id));
408    return db_get_row($sql, $params);
409}
410
411function do_h_review_clip_add_c_review_id4c_review_id_c_member_id($c_review_id, $c_member_id)
412{
413    $sql = "SELECT c_review_clip_id FROM c_review_clip" .
414            " WHERE c_review_id = ?" .
415            " AND c_member_id = ?";
416    $params = array(intval($c_review_id), intval($c_member_id));
417    return db_get_one($sql, $params);
418}
419
420function do_c_member_review_c_review_id4c_review_id_c_member_id($c_review_id, $c_member_id, $c_commu_id)
421{
422    $sql = "SELECT c_commu_review_id FROM c_commu_review" .
423            " WHERE c_commu_id = ?" .
424            " AND c_review_id = ?" .
425            " AND c_member_id = ?";
426    $params = array(intval($c_commu_id), intval($c_review_id), intval($c_member_id));
427    return db_get_one($sql, $params);
428}
429
430function do_h_review_edit_c_review4c_review_comment_id($c_review_comment_id)
431{
432    $sql = "SELECT c_review.* FROM c_review, c_review_comment" .
433        " WHERE c_review_comment.c_review_comment_id=?".
434        " AND c_review_comment.c_review_id=c_review.c_review_id";
435    $params = array(intval($c_review_comment_id));
436    return db_get_row($sql, $params);
437}
438
439function do_common_c_review_id4c_review_comment_id($c_review_comment_id)
440{
441    $sql = 'SELECT c_review_id FROM c_review_comment WHERE c_review_comment_id = ?';
442    $params = array(intval($c_review_comment_id));
443    return db_get_one($sql, $params);
444}
445
446function do_common_count_c_review_comment4c_review_id($c_review_id)
447{
448    $sql = 'SELECT COUNT(*) FROM c_review_comment WHERE c_review_id = ?';
449    $params = array(intval($c_review_id));
450    return db_get_one($sql, $params);
451}
452
453?>
Note: See TracBrowser for help on using the repository browser.