function db_rss_list_friend_c_rss_cache_list($c_member_id, $limit) { static $is_recurred = false; //再帰処理中かどうかの判定フラグ if (!$is_recurred) { //function cacheのために再帰処理を行う $is_recurred = true; $funcargs = func_get_args(); $result = pne_cache_recursive_call(OPENPNE_FUNCTION_CACHE_LIFETIME_FAST, __FUNCTION__, $funcargs); $is_recurred = false; return $result; } $friends = db_friend_c_member_id_list($c_member_id, true); if (!$friends) { return array(); } $ids = implode(',', array_map('intval', $friends)); $hint = db_mysql_hint('USE INDEX (c_member_id_r_datetime)'); $sql = 'SELECT * FROM c_rss_cache' . $hint . ' WHERE c_member_id IN (' . $ids . ')' . ' ORDER BY r_datetime DESC'; $list = db_get_all_limit($sql, 0, $limit); foreach ($list as $key => $value) { $list[$key]['c_member'] = db_member_c_member4c_member_id_LIGHT($value['c_member_id']); } return $list; }
function db_review_c_friend_review_list_more4c_member_id($c_member_id, $page, $page_size) { $friends = db_friend_c_member_id_list($c_member_id, true); if (!$friends) { return array(); } $ids = implode(',', array_map('intval', $friends)); $sql = 'SELECT * FROM c_review INNER JOIN c_review_comment USING (c_review_id)' . ' WHERE c_review_comment.c_member_id IN (' . $ids . ')' . ' ORDER BY c_review_comment.r_datetime DESC'; $list = db_get_all_page($sql, $page, $page_size, $params); foreach ($list as $key => $value) { $list[$key] += db_member_c_member4c_member_id_LIGHT($value['c_member_id']); } $sql = 'SELECT COUNT(*) FROM c_review_comment WHERE c_member_id IN (' . $ids . ')'; $total_num = db_get_one($sql); if ($total_num != 0) { $total_page_num = ceil($total_num / $page_size); if ($page >= $total_page_num) { $next = false; } else { $next = true; } if ($page <= 1) { $prev = false; } else { $prev = true; } } $start_num = ($page - 1) * $page_size + 1; $end_num = ($page - 1) * $page_size + $page_size > $total_num ? $total_num : ($page - 1) * $page_size + $page_size; return array($list, $prev, $next, $total_num, $start_num, $end_num); }
function db_schedule_birth4c_member_id($month, $c_member_id) { $ids = db_friend_c_member_id_list($c_member_id); $ids[] = $c_member_id; $ids = implode(', ', $ids); $sql = 'SELECT * FROM c_member' . ' WHERE c_member_id IN (' . $ids . ')' . ' AND birth_month = ?'; $params = array(intval($month)); $list = db_get_all($sql, $params); $res = array(); foreach ($list as $item) { if ($item['c_member_id'] != $c_member_id && $item['public_flag_birth_month_day'] == 'private') { continue; } $day = intval($item['birth_day']); $res[$day][] = $item; } return $res; }
/** * 自分のフレンドのうち、対象のメンバーと * フレンドリンクしていないフレンドのリストを取得 */ function db_friend_invite_list4c_member_ids($target_c_member_id, $u) { // 自分の友達リスト $my_list = db_friend_c_member_id_list($u); // ターゲットの友達リスト $target_list = db_friend_c_member_id_list($target_c_member_id); $target_list[] = $target_c_member_id; // 自分の友達リストからターゲットの友達を引く $result = array_diff($my_list, $target_list); $list = array(); foreach ($result as $value) { $list[] = db_member_c_member4c_member_id_LIGHT($value); } return $list; }
function p_h_diary_comment_list_c_diary_my_comment_list4c_member_id($c_member_id, $page, $page_size) { $select = 'SELECT cdcl.c_diary_id, cdcl.r_datetime AS maxdate, cd.*'; $from = ' FROM c_diary_comment_log AS cdcl INNER JOIN c_diary AS cd USING (c_diary_id) '; $where = ' WHERE cdcl.c_member_id = ? AND (cd.public_flag = \'public\''; $friends = db_friend_c_member_id_list($c_member_id, true); $friend_ids = implode(',', array_map('intval', $friends)); if ($friend_ids) { $where .= ' OR (cd.public_flag = \'friend\' AND cd.c_member_id IN (' . $friend_ids . '))'; } $where .= ')'; $sql = $select . $from . $where . ' ORDER BY maxdate DESC'; $params = array(intval($c_member_id)); $list = db_get_all_page($sql, $page, $page_size, $params); foreach ($list as $key => $value) { $list[$key] += db_member_c_member4c_member_id_LIGHT($value['c_member_id']); $list[$key]['r_datetime'] = $value['maxdate']; $list[$key]['num_comment'] = db_diary_count_c_diary_comment4c_diary_id($value['c_diary_id']); } $sql = 'SELECT COUNT(cdcl.c_diary_id)' . $from . $where; $params = array(intval($c_member_id)); $total_num = db_get_one($sql, $params); $is_prev = false; $is_next = false; if ($total_num) { $is_prev = (bool) ($page > 1); $is_next = (bool) ($page < ceil($total_num / $page_size)); } return array($list, $is_prev, $is_next, $total_num); }
/** * Myフレンドから指定コミュに参加していない人をランダムに選ぶ */ function db_commu_c_friend_list_random4c_member_id4c_commu_id($c_member_id, $c_commu_id, $limit) { //友達リスト $friend_list = db_friend_c_member_id_list($c_member_id); //参加者リスト $sql = "SELECT c_member_id FROM c_commu_member WHERE c_commu_id = ?"; $params = array(intval($c_commu_id)); $member_list = db_get_col($sql, $params); //友達リストから参加者リストを引く $result = array_diff($friend_list, $member_list); if (!$result) { return array(); } $result = implode(',', array_map('intval', $result)); $sql = 'SELECT c_member_id, nickname FROM c_member' . ' WHERE c_member_id IN ( ' . $result . ') ' . db_order_by_rand(); return db_get_all_limit($sql, 0, $limit); }
/** * フレンド最新アルバムリスト取得 * アルバム公開範囲を考慮 * * @param int $c_member_id * @param int $limit * @return array */ function p_h_home_c_album_friend_list4c_member_id($c_member_id, $limit) { $friends = db_friend_c_member_id_list($c_member_id, true); if (!$friends) { return array(); } $ids = implode(',', array_map('intval', $friends)); $sql = 'SELECT * FROM c_album' . ' WHERE c_member_id IN (' . $ids . ')' . ' AND public_flag <> \'private\'' . ' ORDER BY u_datetime DESC'; $c_album_friend_list = db_get_all_limit($sql, 0, $limit); foreach ($c_album_friend_list as $key => $value) { $c_member = db_member_c_member4c_member_id_LIGHT($value['c_member_id']); $c_album_friend_list[$key]['nickname'] = $c_member['nickname']; } return $c_album_friend_list; }