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; }
/** * inc_navi.tpl の出力を返す * * $type が f または c の場合には、$target_id を指定する必要があります。 * * @param enum('h', 'f', 'c') $type : ナビゲーションのタイプ * @param int $target_id : 友達のメンバーID もしくは コミュニティID * @return html */ function fetch_inc_navi($type, $target_id = null) { // $type が h の場合のみ function cache if ($type == 'h') { 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_LONG, __FUNCTION__, $funcargs); $is_recurred = false; return $result; } } $inc_smarty = new OpenPNE_Smarty($GLOBALS['SMARTY']); $inc_smarty->templates_dir = 'pc/templates'; $inc_smarty->assign('PHPSESSID', md5(session_id())); switch ($type) { case 'h': default: $type = 'h'; break; case 'f': $inc_smarty->assign('INC_NAVI_c_member_id_friend', $target_id); break; case 'c': $inc_smarty->assign('INC_NAVI_c_commu_id', $target_id); break; } $inc_smarty->assign('INC_NAVI_type', $type); $inc_smarty->assign('navi', util_get_c_navi($type)); return $inc_smarty->ext_fetch('inc_navi.tpl'); }
/** * 未読メッセージの数を数える * * @return num_message_not_is_read */ function db_message_count_c_message_not_is_read4c_member_to_id($c_member_id_to) { 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; } $sql = 'SELECT COUNT(*) FROM c_message WHERE c_member_id_to = ?' . ' AND is_read = 0 AND is_send = 1'; $params = array(intval($c_member_id_to)); return db_get_one($sql, $params); }
/** * フレンドのランダムなリストを得る */ function db_friend_c_friend_list_random4c_member_id($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_LONG, __FUNCTION__, $funcargs); $is_recurred = false; return $result; } $sql = "SELECT cf.* , cm.nickname"; $sql .= " FROM c_friend AS cf, c_member AS cm"; $sql .= " WHERE cf.c_member_id_from = ?" . " AND cm.c_member_id=cf.c_member_id_to"; $sql .= db_order_by_rand(); $params = array(intval($c_member_id)); $c_friend_list = db_get_all_limit($sql, 0, $limit, $params); foreach ($c_friend_list as $key => $value) { $c_friend_list[$key]['count_friend'] = db_friend_count_friends($value['c_member_id_to']); } return $c_friend_list; }
/** * 日記コメント記入履歴取得 * * @param int $c_member_id * @param int $limit * @return array_of_array (c_diary.*, nickname) */ function p_h_home_c_diary_my_comment_list4c_member_id($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; } $sql = 'SELECT cdcl.c_diary_id, cdcl.r_datetime AS maxdate, cd.*' . ' FROM c_diary_comment_log AS cdcl INNER JOIN c_diary AS cd USING (c_diary_id) ' . ' 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) { $sql .= ' OR (cd.public_flag = \'friend\' AND cd.c_member_id IN (' . $friend_ids . '))'; } $sql .= ') ORDER BY maxdate DESC'; $params = array(intval($c_member_id)); $list = db_get_all_limit($sql, 0, $limit, $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']); } return $list; }
/** * お気に入りメンバーリスト */ function db_bookmark_member_list($c_member_id, $limit = 0) { 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_LONG, __FUNCTION__, $funcargs); $is_recurred = false; return $result; } $sql = 'SELECT c_member_id_to AS c_member_id FROM c_bookmark' . ' WHERE c_member_id_from = ?' . db_order_by_rand(); $params = array(intval($c_member_id)); if ($limit) { $result = db_get_all_limit($sql, 0, intval($limit), $params); } else { $result = db_get_all($sql, $params); } foreach ($result as $key => $value) { $result[$key] = db_member_c_member4c_member_id_LIGHT($value['c_member_id']); $result[$key]['friend_count'] = db_friend_count_friends($value['c_member_id']); } return $result; }
/** * 指定ユーザの登録画像の合計サイズを取得する * パラメータ省略された場合、全体の合計サイズを取得する * * @param int $u * @param string $category * @return int 登録画像合計サイズ */ function db_image_get_image_filesize($u = 0, $category = '') { 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; } $sql = "SELECT SUM(filesize) FROM c_image_size "; $where = array(); $params = array(); if ($u) { $where[] = "(c_member_id = ?)"; $params[] = $u; } if ($category) { if ($category != 'other') { $where[] = "(image_category = ?)"; } else { $where[] = "((image_category = ?)"; } $params[] = $category; } if ($where) { $sql .= " WHERE " . implode(' AND ', $where); } $other = array(); if ($category == 'other') { if (!OPENPNE_ALBUM_LIMIT) { $sql .= " OR (image_category = ?)"; $params[] = 'album'; } if (!OPENPNE_IMAGE_DIARY_LIMIT) { $sql .= " OR (image_category = ?)"; $params[] = 'diary'; } if (!OPENPNE_IMAGE_COMMU_LIMIT) { $sql .= " OR (image_category = ?)"; $params[] = 'commu'; } $sql .= ")"; } return db_get_one($sql, $params); }
function db_portal_public_c_commmu_list($limit = 5) { static $is_recurred = false; //再帰処理中かどうかの判定フラグ if (!$is_recurred) { //function cacheのために再帰処理を行う $is_recurred = true; $funcargs = func_get_args(); $result = pne_cache_recursive_call(7200, __FUNCTION__, $funcargs); $is_recurred = false; return $result; } $select = "SELECT ct.*, c.name as commu_name, c.image_filename as image_filename"; $from = " FROM c_commu_topic as ct" . " LEFT JOIN c_commu as c ON c.c_commu_id = ct.c_commu_id"; $where = " WHERE c.is_open <> 'member'"; $order = " ORDER BY ct.u_datetime DESC"; $sql = $select . $from . $where . $order; $list = db_get_all_limit($sql, 0, $limit); foreach ($list as $key => $value) { $list[$key]['count_comments'] = db_portal_db_count_c_commu_topic_comments4c_commu_topic_id($value['c_commu_topic_id']); } return $list; }
function db_member_c_profile_list() { 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; } $list = db_member_c_profile_list4null(); $profile_list = array(); foreach ($list as $value) { $profile_list[$value['name']] = $value; $profile_list[$value['name']]['options'] = db_member_c_profile_option_list4c_profile_id($value['c_profile_id']); } return $profile_list; }