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

source: OpenPNE/branches/stable-2.12.x/webapp/lib/db/friend.php @ 9296

Last change on this file since 9296 was 9296, checked in by akamine, 12 years ago

#3107 各関数定義を従来の形に戻し、新規関数の定義を作成

File size: 26.6 KB
Line 
1<?php
2/**
3 * @copyright 2005-2008 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7/**
8 * あるメンバーの友達数を取得
9 *
10 * @param int $c_member_id
11 * @return int 友達数
12 */
13function db_friend_count_friends($c_member_id)
14{
15    $sql = 'SELECT COUNT(*) FROM c_friend WHERE c_member_id_from = ?';
16    $params = array(intval($c_member_id));
17    return db_get_one($sql, $params);
18}
19
20/**
21 * 友達かどうか判定
22 *
23 * @param  int $c_member_id1
24 * @param  int $c_member_id2
25 * @return bool
26 */
27function db_friend_is_friend($c_member_id1, $c_member_id2)
28{
29    $sql = 'SELECT c_friend_id FROM c_friend' .
30            ' WHERE c_member_id_from = ? AND c_member_id_to = ?';
31    $params = array(intval($c_member_id1), intval($c_member_id2));
32    return (bool)db_get_one($sql, $params);
33}
34
35/**
36 * 友達のメンバーIDリスト取得
37 *
38 * @param  int $c_member_id
39 * @param  bool $except_blocked アクセスブロックされているメンバーを除外するか
40 * @return array  友達のメンバーID配列
41 */
42function db_friend_c_member_id_list($c_member_id, $except_blocked = false)
43{
44    $sql = 'SELECT c_member_id_to FROM c_friend WHERE c_member_id_from = ? ORDER BY c_friend_id';
45    $params = array(intval($c_member_id));
46    $friends = db_get_col($sql, $params);
47
48    if ($except_blocked) {
49        $blocked = db_member_access_block_list4c_member_id_to($c_member_id);
50        $friends = array_diff($friends, $blocked);
51    }
52    return $friends;
53}
54
55/**
56 * 紹介文を取得
57 */
58function db_friend_c_friend_intro($c_member_id_from, $c_member_id_to)
59{
60    $sql = 'SELECT intro FROM c_friend WHERE c_member_id_from = ? AND c_member_id_to = ?';
61    $params = array(intval($c_member_id_from), intval($c_member_id_to));
62    return db_get_one($sql, $params);
63}
64
65/**
66 * メンバーと自分の中間のフレンドを得る
67 */
68function db_friend_friend_path4c_member_ids($my_id, $target_id)
69{
70    if (db_friend_is_friend($my_id, $target_id)) {
71        return null;
72    }
73
74    //自分の友達リスト
75    $my_list = db_friend_c_member_id_list($my_id);
76
77    //相手の友達リスト
78    $target_list = db_friend_c_member_id_list($target_id);
79
80    //共通の友達リスト
81    $result_list = array_intersect($my_list, $target_list);
82    if (!$result_list) {
83        return null;
84    }
85
86    $result_key = array_rand($result_list);
87    $result_id  = $result_list[$result_key];
88
89    return db_member_c_member4c_member_id($result_id);
90}
91
92/**
93 * 自分のフレンドのうち、対象のメンバーと
94 * フレンドリンクしていないフレンドのリストを取得
95 */
96function db_friend_invite_list4c_member_ids($target_c_member_id, $u)
97{
98    // 自分の友達リスト
99    $my_list = db_friend_c_member_id_list($u);
100
101    // ターゲットの友達リスト
102    $target_list = db_friend_c_member_id_list($target_c_member_id);
103    $target_list[] = $target_c_member_id;
104
105    // 自分の友達リストからターゲットの友達を引く
106    $result = array_diff($my_list, $target_list);
107
108    $list = array();
109    foreach ($result as $value) {
110        $list[] = db_member_c_member4c_member_id_LIGHT($value);
111    }
112    return $list;
113}
114
115//---
116
117function db_friend_friend_list4c_member_id2($c_member_id, $page_size, $page, $orderby)
118{
119    switch ($orderby) {
120    case "ld":
121        $orderby = "m.access_date DESC";
122        break;
123    case "la":
124        $orderby = "m.access_date";
125        break;
126    case "rd":
127        $orderby = "f.r_datetime DESC";
128        break;
129    case "ra":
130        $orderby = "f.r_datetime";
131        break;
132    default:
133        $orderby = "f.r_datetime DESC";
134    }
135
136    $sql = "SELECT" .
137          " m.c_member_id, m.access_date, m.nickname, m.image_filename" .
138          ", f.intro, f.r_datetime" .
139        " FROM c_member AS m, c_friend AS f" .
140        " WHERE f.c_member_id_from = ?" .
141          " AND f.c_member_id_to = m.c_member_id" .
142        " ORDER BY ". $orderby;
143    $params = array(intval($c_member_id));
144    $friend_list = db_get_all_page($sql, $page, $page_size, $params);
145
146    foreach ($friend_list as $key => $value) {
147        $friend_list[$key]['friend_count'] = db_friend_count_friends($value['c_member_id']);
148    }
149
150    $total_num = db_friend_count_friends($c_member_id);
151    $total_page_num =  ceil($total_num / $page_size);
152
153    $next = ($page < $total_page_num);
154    $prev = ($page > 1);
155
156    return array($friend_list , $prev , $next, $total_page_num);
157}
158
159function db_friend_intro_list4c_member_id($c_member_id)
160{
161    $sql = "SELECT c_member_id_from AS c_member_id, intro FROM c_friend" .
162            " WHERE c_member_id_to = ? AND intro <> ''" .
163            " ORDER BY r_datetime_intro DESC";
164    $params = array(intval($c_member_id));
165
166    $list = db_get_all($sql, $params);
167    foreach ($list as $key => $value) {
168        $list[$key] += db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
169    }
170    return $list;
171}
172
173function db_friend_intro_list_with_my_intro4c_member_id($c_member_id)
174{
175    $list = db_friend_intro_list4c_member_id($c_member_id);
176
177    $sql = 'SELECT intro FROM c_friend WHERE c_member_id_from = ? AND c_member_id_to = ?';
178    foreach ($list as $key => $value) {
179        $params = array(intval($c_member_id), intval($value['c_member_id']));
180        $list[$key]['has_intro_by_me'] = (db_get_one($sql, $params) !== '');
181    }
182    return $list;
183}
184
185/**
186 * フレンドからの紹介文リスト
187 */
188function db_friend_c_friend_comment4c_member_id($c_member_id, $limit = 5)
189{
190    static $is_recurred = false;  //再帰処理中かどうかの判定フラグ
191
192    if (!$is_recurred) {  //function cacheのために再帰処理を行う
193        $is_recurred = true;
194        $funcargs = func_get_args();
195        return pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_LONG, __FUNCTION__, $funcargs);
196    }
197
198    $is_recurred = false;
199
200    $sql = "SELECT c_member_id_from AS c_member_id, intro FROM c_friend" .
201            " WHERE c_member_id_to = ? AND intro <> ''" .
202            " ORDER BY r_datetime_intro DESC";
203    $params = array(intval($c_member_id));
204
205    $list = db_get_all_limit($sql, 0, $limit, $params);
206    foreach ($list as $key => $value) {
207        $list[$key] += db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
208    }
209    return $list;
210}
211
212/**
213 * c_friend取得
214 */
215function db_friend_c_friend4c_member_id_from4c_member_id_to($c_member_id_from,$c_member_id_to)
216{
217    $sql =  "SELECT c_friend_id,".
218                "c_member_id_from,".
219                "c_member_id_to,".
220                "intro,".
221                "r_datetime".
222            " FROM c_friend".
223            " WHERE c_friend.c_member_id_from = ?" .
224                " AND c_friend.c_member_id_to = ?" .
225                " AND intro <> ''";
226    $params = array(intval($c_member_id_from), intval($c_member_id_to));
227    return db_get_row($sql, $params);
228}
229
230/**
231 * フレンドリスト
232 */
233function db_friend_c_friend_list4c_member_id($c_member_id, $limit = 0)
234{
235    $result = db_friend_c_friend_id_list4c_member_id($c_member_id, $limit);
236
237    foreach ($result as $key => $value) {
238        $result[$key] = db_member_c_member4c_member_id_LIGHT($value['c_member_id']);
239        $result[$key]['friend_count'] = db_friend_count_friends($value['c_member_id']);
240    }
241    return $result;
242}
243
244/**
245 * フレンドリスト用IDリストを取得する関数
246 */
247function db_friend_c_friend_id_list4c_member_id($c_member_id, $limit)
248{
249    static $is_recurred = false;  //再帰処理中かどうかの判定フラグ
250
251    if (!$is_recurred) {  //function cacheのために再帰処理を行う
252        $is_recurred = true;
253        $funcargs = func_get_args();
254        return pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_LONG, __FUNCTION__, $funcargs);
255    }
256
257    $is_recurred = false;
258
259    $sql = 'SELECT c_member_id_to AS c_member_id FROM c_friend' .
260            ' WHERE c_member_id_from = ?' . db_order_by_rand();
261    $params = array(intval($c_member_id));
262    if ($limit) {
263        $result = db_get_all_limit($sql, 0, $limit, $params);
264    } else {
265        $result = db_get_all($sql, $params);
266    }
267
268    return $result;
269}
270
271function db_friend_intro_body4c_member_id($u, $target_c_member_id)
272{
273    $sql = "SELECT intro FROM c_friend" .
274            " WHERE c_member_id_to = ? AND c_member_id_from = ?";
275    $params = array(intval($target_c_member_id), intval($u));
276    return db_get_one($sql, $params);
277}
278
279/**
280 * あなたにフレンドリンクを要請しているメンバー
281 *
282 * @param   int $c_member_id_to : 要請されている方(あなた)
283 * @return  array_of_array
284 *              c_friend_confirm.*
285 *              nickname        : 要請している人の名前
286 *              image_filename  : 要請している人の画像
287 * @see     h_confirm_list.php
288 */
289function db_friend_anatani_c_friend_confirm_list4c_member_id($c_member_id_to)
290{
291    $sql = 'SELECT * FROM c_friend_confirm WHERE c_member_id_to = ?' .
292            ' ORDER BY r_datetime DESC';
293    $params = array(intval($c_member_id_to));
294    $c_friend_confirm_list = db_get_all($sql, $params);
295
296    foreach ($c_friend_confirm_list as $key => $value) {
297        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_from']);
298        $c_friend_confirm_list[$key]['nickname'] = $c_member['nickname'];
299        $c_friend_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
300    }
301    return $c_friend_confirm_list;
302}
303
304/**
305 * あなたがフレンドリンクを要請しているメンバー
306 *
307 * @param   int $c_member_id_from   : 要請している方(あなた)
308 * @return  array_of_array
309 *              c_friend_confirm.*
310 *              nickname        : 要請されている人の名前
311 *              image_filename  : 要請されている人の画像
312 * @see     h_confirm_list.php
313 */
314function db_friend_anataga_c_friend_confirm_list4c_member_id($c_member_id_from)
315{
316    $sql = 'SELECT * FROM c_friend_confirm WHERE c_member_id_from = ?' .
317            ' ORDER BY r_datetime DESC';
318    $params = array(intval($c_member_id_from));
319    $c_friend_confirm_list = db_get_all($sql, $params);
320
321    foreach ($c_friend_confirm_list as $key => $value) {
322        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_to']);
323        $c_friend_confirm_list[$key]['nickname'] = $c_member['nickname'];
324        $c_friend_confirm_list[$key]['image_filename'] = $c_member['image_filename'];
325    }
326    return $c_friend_confirm_list;
327}
328
329function db_friend_c_friend_intro_list4c_member_id($c_member_id, $limit)
330{
331    static $is_recurred = false;  //再帰処理中かどうかの判定フラグ
332
333    if (!$is_recurred) {  //function cacheのために再帰処理を行う
334        $is_recurred = true;
335        $funcargs = func_get_args();
336        return pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_LONG, __FUNCTION__, $funcargs);
337    }
338
339    $is_recurred = false;
340
341    $sql = 'SELECT * FROM c_friend' .
342            ' WHERE c_member_id_to = ? AND intro <> \'\'' . db_order_by_rand();
343    $params = array(intval($c_member_id));
344    $list = db_get_all_limit($sql, 0, $limit, $params);
345
346    foreach ($list as $key => $value) {
347        $list[$key] += db_member_c_member4c_member_id_LIGHT($value['c_member_id_from']);
348    }
349    return $list;
350}
351
352function db_friend_c_friend_list_disp4c_member_id($c_member_id, $page = 1, $size = 20)
353{
354    $sql =  "SELECT c_member_id,".
355                "image_filename,".
356                "nickname,".
357                "intro,".
358                "c_member_id_from,".
359                "c_member_id_to".
360            " FROM c_member,".
361                "c_friend".
362            " WHERE c_member.c_member_id = c_friend.c_member_id_from".
363                " AND c_friend.c_member_id_to = ?".
364            " ORDER BY c_friend.r_datetime DESC";
365    $params = array(intval($c_member_id));
366    $c_friend_list = db_get_all_page($sql, $page, $size, $params);
367
368    foreach ($c_friend_list as $key => $value) {
369        $c_friend = db_friend_c_friend4c_member_id_from4c_member_id_to($value['c_member_id_to'], $value['c_member_id_from']);
370        $c_friend_list[$key]['intro'] = $c_friend['intro'];
371
372        $c_friend_list[$key]['friend_count'] = db_friend_count_friends($value['c_member_id_from']);
373    }
374
375    $total_num = db_friend_count_friends($c_member_id);
376    $prev = 0;
377    $next = 0;
378    if ($total_num) {
379        $total_page_num = ceil($total_num / $size);
380        if ($page < $total_page_num) {
381            $next = $page + 1;
382        }
383
384        if ($page > 1) {
385            $prev = $page - 1;
386        }
387    }
388
389    return array($c_friend_list, $prev, $next, $total_num);
390}
391
392function db_friend_status($u, $target_c_member_id)
393{
394    $ret = array(
395        'c_member'      => db_member_c_member4c_member_id($target_c_member_id),
396        'is_friend'     => false,
397        'is_friend_confirm' => false,
398    );
399
400    $ret['is_friend'] = db_friend_is_friend($u, $target_c_member_id);
401    $ret['is_friend_confirm'] = db_friend_is_friend_link_wait($u, $target_c_member_id);
402
403    return $ret;
404}
405
406/**
407 * 友達リンク要請情報をIDから取得
408 *
409 * @param   int $c_friend_confirm_id
410 * @return  array c_friend_confirm.*
411 */
412function db_friend_c_friend_confirm4c_friend_confirm_id($c_friend_confirm_id)
413{
414    $sql = 'SELECT * FROM c_friend_confirm WHERE c_friend_confirm_id = ?';
415    $params = array(intval($c_friend_confirm_id));
416    return db_get_row($sql, $params);
417}
418
419function db_friend_is_friend_link_wait($c_member_id_from, $c_member_id_to)
420{
421    //from→to
422    $sql = "SELECT count(*)";
423    $sql .= " FROM  c_friend_confirm";
424    $sql .= " WHERE c_member_id_from = ?";
425    $sql .= " AND c_member_id_to = ?";
426    $params = array(intval($c_member_id_from), intval($c_member_id_to));
427    $countA = db_get_one($sql, $params);
428
429    //to→from
430    $sql = "SELECT count(*)";
431    $sql .= " FROM  c_friend_confirm";
432    $sql .= " WHERE c_member_id_from = ?";
433    $sql .= " AND c_member_id_to = ?";
434    $params = array(intval($c_member_id_to), intval($c_member_id_from));
435    $countB = db_get_one($sql, $params);
436
437    if ($countA || $countB) {
438        return true;
439    } else {
440        return false;
441    }
442}
443
444function db_friend_c_friend_list4c_member_id2($c_member_id)
445{
446    $sql = "SELECT c_member.* FROM c_friend, c_member" .
447        " WHERE c_friend.c_member_id_from = ?".
448        " AND c_member.c_member_id=c_friend.c_member_id_to".
449        " ORDER BY c_friend.r_datetime DESC";
450    $params = array(intval($c_member_id));
451    return db_get_all($sql, $params);
452}
453
454/**
455 * フレンドのランダムなリストを得る
456 */
457function db_friend_c_friend_list_random4c_member_id($c_member_id, $limit)
458{
459    static $is_recurred = false;  //再帰処理中かどうかの判定フラグ
460
461    if (!$is_recurred) {  //function cacheのために再帰処理を行う
462        $is_recurred = true;
463        $funcargs = func_get_args();
464        return pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_LONG, __FUNCTION__, $funcargs);
465    }
466
467    $is_recurred = false;
468
469    $sql = "SELECT cf.* , cm.nickname";
470    $sql .= " FROM c_friend AS cf, c_member AS cm";
471    $sql .= " WHERE cf.c_member_id_from = ?" .
472            " AND cm.c_member_id=cf.c_member_id_to";
473    $sql .= db_order_by_rand();
474    $params = array(intval($c_member_id));
475    $c_friend_list = db_get_all_limit($sql, 0, $limit, $params);
476
477    foreach ($c_friend_list as $key => $value) {
478        $c_friend_list[$key]['count_friend'] = db_friend_count_friends($value['c_member_id_to']);
479    }
480
481    return $c_friend_list;
482}
483
484/**
485 * 2つのメンバーIDからその2人の関係を返す。
486 */
487function db_friend_relationship4two_members($c_member_id, $target_c_member_id)
488{
489    $relation = array(
490        'friend' => false,
491        'wait'   => false
492    );
493
494    // リンク承認待ちかどうかをチェック
495    $sql = 'SELECT c_friend_confirm_id FROM c_friend_confirm' .
496            ' WHERE c_member_id_from = ? AND c_member_id_to = ?';
497    $params = array(intval($c_member_id), intval($target_c_member_id));
498
499    if (db_get_one($sql, $params)) {
500        $relation['wait'] = true;
501        return $relation;
502    }
503
504    // 友達かどうかチェック
505    $sql = 'SELECT c_friend_id FROM c_friend' .
506            ' WHERE c_member_id_from = ? AND c_member_id_to = ?';
507
508    if (db_get_one($sql, $params)) {
509        $relation['friend'] = true;
510        return $relation;
511    }
512
513    //他人
514    return $relation;
515}
516
517function db_friend_friend_list4c_member_id($c_member_id,$page_size,$page)
518{
519    $sql = "SELECT ".
520            "c_friend_id,".
521            "c_member_id_from,".
522            "c_member_id_to,".
523            "r_datetime".
524        " FROM ".
525            "c_friend".
526        " WHERE c_member_id_from = ?".
527        " ORDER BY r_datetime DESC";
528    $params = array(intval($c_member_id));
529    $c_friend_list = db_get_all_page($sql, $page, $page_size, $params);
530
531    foreach ($c_friend_list as $key => $value) {
532        $c_member = db_member_c_member4c_member_id($value['c_member_id_to']);
533
534        $c_friend_list[$key]['image_filename'] = $c_member['image_filename'];
535        $c_friend_list[$key]['c_member_id'] = $c_member['c_member_id'];
536        $c_friend_list[$key]['nickname'] = $c_member['nickname'];
537        $c_friend_list[$key]['access_date'] = $c_member['access_date'];
538
539        $c_friend_list[$key]['friend_count'] = db_friend_count_friends($c_member['c_member_id']);
540    }
541
542    $total_num = db_friend_count_friends($c_member_id);
543
544    if ($total_num != 0) {
545        $total_page_num =  ceil($total_num / $page_size);
546        if ($page >= $total_page_num) {
547            $next = false;
548        } else {
549            $next = true;
550        }
551
552        if ($page <= 1) {
553            $prev = false;
554        } else {
555            $prev = true;
556        }
557    }
558    return array($c_friend_list, $prev, $next, $total_num);
559}
560
561/**
562 * あなたにフレンドリンクを要請しているメンバー数を取得(リンク承認待ち)
563 *
564 * @param int $c_member_id
565 * @return int 要請しているメンバー数
566 */
567function db_friend_count_c_anatani_friend_confirm($c_member_id)
568{
569    $sql = 'SELECT COUNT(*) FROM c_friend_confirm WHERE c_member_id_to = ?';
570    $params = array(intval($c_member_id));
571    return db_get_one($sql, $params);
572}
573
574/**
575 * あなたにフレンドリンクを要請しているメンバー(リンク承認待ち)
576 *
577 * @param   int $c_member_id_to : 要請されている方(あなた)
578 * @return  array_of_array
579 *              c_friend_confirm.*
580 *              nickname        : 要請している人の名前
581 *              message_disp    : 表示用メッセージ
582 */
583function db_friend_ktai_anatani_c_friend_confirm_list4c_member_id($c_member_id_to)
584{
585    $sql = "SELECT * FROM c_friend_confirm WHERE c_member_id_to = ?";
586    $sql .= " ORDER BY r_datetime DESC";
587    $params = array(intval($c_member_id_to));
588    $c_friend_confirm_list = db_get_all($sql, $params);
589
590    foreach ($c_friend_confirm_list as $key => $value) {
591        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_from']);
592        $c_friend_confirm_list[$key]['nickname'] = $c_member['nickname'];
593    }
594    return $c_friend_confirm_list;
595}
596
597function db_friend_ktai_anatani_c_friend_confirm_list4c_member_id2($c_member_id_to, $page_size, $page)
598{
599    $sql = "SELECT * FROM c_friend_confirm WHERE c_member_id_to = ?";
600    $sql .= " ORDER BY r_datetime DESC";
601    $params = array(intval($c_member_id_to));
602    $c_friend_confirm_list = db_get_all_page($sql, $page, $page_size, $params);
603
604    foreach ($c_friend_confirm_list as $key => $value) {
605        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_from']);
606        $c_friend_confirm_list[$key]['nickname'] = $c_member['nickname'];
607    }
608
609    $total_num = db_friend_count_c_anatani_friend_confirm($c_member_id_to);
610
611    if ($total_num != 0) {
612        $total_page_num = ceil($total_num / $page_size);
613        if ($page >= $total_page_num) {
614            $next = false;
615        } else {
616            $next = true;
617        }
618
619        if ($page <= 1) {
620            $prev = false;
621        } else {
622            $prev = true;
623        }
624    }
625    return array($c_friend_confirm_list, $prev, $next, $total_num);
626}
627
628/**
629 * あなたがフレンドリンクを要請しているメンバー数を取得(リンク承認待ち)
630 *
631 * @param int $c_member_id
632 * @return int 要請しているメンバー数
633 */
634function db_friend_count_c_anataga_friend_confirm($c_member_id)
635{
636    $sql = 'SELECT COUNT(*) FROM c_friend_confirm WHERE c_member_id_from = ?';
637    $params = array(intval($c_member_id));
638    return db_get_one($sql, $params);
639}
640
641/**
642 * あなたがフレンドリンクを要請しているメンバー(リンク要請中)
643 *
644 * @param   int $c_member_id_from   : 要請している方(あなた)
645 * @return  array_of_array
646 *              c_friend_confirm.*
647 *              nickname        : 要請されている人の名前
648 *              message_disp    : 表示用メッセージ
649 */
650function db_friend_ktai_anataga_c_friend_confirm_list4c_member_id($c_member_id_from)
651{
652    $sql = "SELECT * FROM c_friend_confirm WHERE c_member_id_from = ?";
653    $sql .= " ORDER BY r_datetime DESC";
654    $params = array(intval($c_member_id_from));
655    $c_friend_confirm_list = db_get_all($sql, $params);
656
657    foreach ($c_friend_confirm_list as $key => $value) {
658        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_to']);
659        $c_friend_confirm_list[$key]['nickname'] = $c_member['nickname'];
660    }
661    return $c_friend_confirm_list;
662}
663
664function db_friend_ktai_anataga_c_friend_confirm_list4c_member_id2($c_member_id_from, $page_size, $page)
665{
666    $sql = "SELECT * FROM c_friend_confirm WHERE c_member_id_from = ?";
667    $sql .= " ORDER BY r_datetime DESC";
668    $params = array(intval($c_member_id_from));
669    $c_friend_confirm_list = db_get_all_page($sql, $page, $page_size, $params);
670
671    foreach ($c_friend_confirm_list as $key => $value) {
672        $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id_to']);
673        $c_friend_confirm_list[$key]['nickname'] = $c_member['nickname'];
674    }
675
676    $total_num = db_friend_count_c_anataga_friend_confirm($c_member_id_from);
677
678    if ($total_num != 0) {
679        $total_page_num = ceil($total_num / $page_size);
680        if ($page >= $total_page_num) {
681            $next = false;
682        } else {
683            $next = true;
684        }
685
686        if ($page <= 1) {
687            $prev = false;
688        } else {
689            $prev = true;
690        }
691    }
692    return array($c_friend_confirm_list, $prev, $next, $total_num);
693}
694
695/**
696 * 友達ランダム50人
697 */
698function db_friend_ktai_c_friend_list_random4c_member_id($c_member_id)
699{
700    $sql = "SELECT cf.c_member_id_to, cm.nickname";
701    $sql .= " FROM c_friend AS cf, c_member AS cm";
702    $sql .= " WHERE cf.c_member_id_from = ?".
703            " AND cf.c_member_id_to = cm.c_member_id";
704    $sql .= db_order_by_rand();
705    $params = array(intval($c_member_id));
706    return db_get_all_limit($sql, 0, 50, $params);
707}
708
709function db_friend_intro_list4c_friend_comment_list($c_friend_comment_list, $page, $page_size)
710{
711    $lst = array_slice($c_friend_comment_list, ($page - 1) * $page_size, $page_size);
712    $total_num = count($c_friend_comment_list);
713
714    if ($total_num === 0) {
715        $prev = $next = false;
716    } else {
717        $total_page_num =  ceil($total_num / $page_size);
718        $next = ($page < $total_page_num) ? true : false;
719        $prev = ($page > 1) ? true : false;
720    }
721    return array($lst, $prev, $next, $total_num);
722}
723
724/*** write ***/
725
726//--- c_friend
727
728/**
729 * フレンドリンクを追加
730 */
731function db_friend_insert_c_friend($c_member_id_from, $c_member_id_to)
732{
733    //function cache削除
734    cache_drop_c_member($c_member_id_from);
735    cache_drop_c_member($c_member_id_to);
736
737    if (($c_member_id_from < 1) || ($c_member_id_to < 1))
738        return false;
739
740    if (db_friend_is_friend($c_member_id_from, $c_member_id_to))
741        return false;
742
743    $data = array(
744        'c_member_id_from' => intval($c_member_id_from),
745        'c_member_id_to' => intval($c_member_id_to),
746        'r_datetime' => db_now(),
747        'intro' => '',
748    );
749    db_insert('c_friend', $data);
750
751    $data = array(
752        'c_member_id_from' => intval($c_member_id_to),
753        'c_member_id_to' => intval($c_member_id_from),
754        'r_datetime' => db_now(),
755        'intro' => '',
756    );
757    db_insert('c_friend', $data);
758}
759
760/**
761 * リンク申請からフレンドリンクを追加
762 *
763 * @param   int $c_friend_confirm_id
764 * @param   int $u  自分のc_member_id
765 */
766function db_friend_insert_c_friend4confirm($c_friend_confirm_id, $u)
767{
768    $confirm = db_friend_c_friend_confirm4c_friend_confirm_id($c_friend_confirm_id);
769    if ($confirm['c_member_id_to'] != $u) {
770        return false;
771    }
772    $c_member_id_from = $confirm['c_member_id_from'];
773    $c_member_id_to   = $confirm['c_member_id_to'];
774
775    // フレンドリンクを追加
776    db_friend_insert_c_friend($c_member_id_from, $c_member_id_to);
777
778    // フレンド申請を削除
779    db_friend_delete_c_friend_confirm($c_friend_confirm_id, $u);
780    return true;
781}
782
783/**
784 * フレンドリンクを削除
785 */
786function db_friend_delete_c_friend($c_member_id_from, $c_member_id_to)
787{
788    //function cache削除
789    cache_drop_c_member($c_member_id_from);
790    cache_drop_c_member($c_member_id_to);
791
792    $sql = 'DELETE FROM c_friend' .
793            ' WHERE (c_member_id_from = ? AND c_member_id_to = ?)' .
794               ' OR (c_member_id_to = ? AND c_member_id_from = ?)';
795    $params = array(
796        intval($c_member_id_from), intval($c_member_id_to),
797        intval($c_member_id_from), intval($c_member_id_to));
798    db_query($sql, $params);
799}
800
801/**
802 * フレンド紹介文入力・編集
803 */
804function db_friend_update_c_friend_intro($c_member_id_from, $c_member_id_to, $intro)
805{
806    //function cacheを削除
807    cache_drop_c_friend_intro($c_member_id_to);
808
809    $data = array(
810        'intro' => $intro,
811        'r_datetime_intro' => db_now(),
812    );
813    $where = array(
814        'c_member_id_from' => intval($c_member_id_from),
815        'c_member_id_to' => intval($c_member_id_to),
816    );
817    db_update('c_friend', $data, $where);
818}
819
820//--- c_friend_confirm
821
822/**
823 * フレンド申請を追加
824 *
825 * @param  int    $c_member_id_from
826 * @param  int    $c_member_id_to
827 * @param  string $message
828 * @return int insert_id
829 */
830function db_friend_insert_c_friend_confirm($c_member_id_from, $c_member_id_to, $message)
831{
832    $data = array(
833        'c_member_id_from' => intval($c_member_id_from),
834        'c_member_id_to'   => intval($c_member_id_to),
835        'message'          => $message,
836        'r_datetime'       => db_now(),
837    );
838    return db_insert('c_friend_confirm', $data);
839}
840
841/**
842 * フレンド申請を削除
843 *
844 * @param  int  $c_friend_confirm_id
845 * @param  int  $u 自分のc_member_id
846 */
847function db_friend_delete_c_friend_confirm($c_friend_confirm_id, $u)
848{
849    $sql = 'DELETE FROM c_friend_confirm WHERE c_friend_confirm_id = ?' .
850            ' AND (c_member_id_from = ? OR c_member_id_to = ?)';
851    $params = array(intval($c_friend_confirm_id), intval($u), intval($u));
852    db_query($sql, $params);
853}
854
855?>
Note: See TracBrowser for help on using the repository browser.