国产精品爱啪在线线免费观看_97视频精品_欧美精品一区二区在线播放_国产欧美久久一区二区三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4633|回復: 0

[內置擴展] Discuz x3.5 核心文件 function/function_friend.php 函數注釋

[復制鏈接]
1#
發表于 2024-6-23 13:30:31 | 只看該作者 |倒序瀏覽 |閱讀模式

馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區

您需要 登錄 才可以下載或查看,沒有賬號?立即注冊

×
[PHP] 純文本查看 復制代碼
<?php

/**
 *      [Discuz!] (C)2001-2099 Comsenz Inc.
 *      This is NOT a freeware, use is subject to license terms
 *
 *      $Id: function_friend.php 26635 2011-12-19 01:59:13Z zhangguosheng $
 */

if(!defined('IN_DISCUZ')) {
	exit('Access Denied');
}
/**
 * 獲取指定用戶的友人列表
 *
 * @param int $uid 用戶ID
 * @param int $limit 返回結果的數量限制
 * @param int $start 返回結果的起始位置(默認為0)
 * @return array 返回友人列表,鍵為友人的ID,值為友人信息
 */
function friend_list($uid, $limit, $start=0) {
    $list = array();
    $query = C::t('home_friend')->fetch_all_by_uid($uid, $start, $limit, true);
    foreach($query as $value) {
        $list[$value['fuid']] = $value;
    }
    return $list;
}

/**
 * 獲取當前用戶的友人分組列表
 *
 * @return array 返回友人分組列表
 */
function friend_group_list() {
    global $_G;

    $space = array('uid' => $_G['uid']);
    space_merge($space, 'field_home');

    $groups = array();
    $spacegroup = empty($space['privacy']['groupname'])?array():$space['privacy']['groupname'];
    for($i = 0; $i < $_G['setting']['friendgroupnum']; $i++) {
        if($i == 0) {
            $groups[0] = lang('friend', 'friend_group_default');
        } else {
            if(!empty($spacegroup[$i])) {
                $groups[$i] = $spacegroup[$i];
            } else {
                if($i<8) {
                    $groups[$i] = lang('friend', 'friend_group_'.$i);
                } else {
                    $groups[$i] = lang('friend', 'friend_group_more', array('num'=>$i));
                }
            }
        }
    }
    return $groups;
}

/**
 * 檢查指定用戶是否為當前用戶的友人
 *
 * @param mixed $touids 可以是單個用戶ID或用戶ID數組
 * @param int $isfull 是否獲取完整友人信息,默認為0(只檢查友人關系是否存在)
 * @return mixed 如果是數組形式的$touids,返回布爾值;如果是單個用戶ID,返回布爾值或友人信息數組
 */
function friend_check($touids, $isfull = 0) {
    global $_G;

    if(empty($_G['uid'])) return false;
    if(is_array($touids)) {
        $query = C::t('home_friend')->fetch_all_by_uid_fuid($_G['uid'], $touids);

        foreach($query as $value) {
            $touid = $value['fuid'];
            $var = "home_friend_{$_G['uid']}_{$touid}";
            $fvar = "home_friend_{$touid}_{$_G['uid']}";
            $_G[$var] = $_G[$fvar] = true;
            if($isfull) {
                $fvarinfo = "home_friend_info_{$touid}_{$_G['uid']}";
                $_G[$fvarinfo] = $value;
            }
        }

        if(count($query) != count($touids)) {
            return false;
        } else {
            return true;
        }
    } else {
        $touid = $touids;
        $var = "home_friend_{$_G['uid']}_{$touid}";
        $fvar = "home_friend_{$touid}_{$_G['uid']}";
        if(!isset($_G[$var])) {
            $query = C::t('home_friend')->fetch_all_by_uid_fuid($_G['uid'], $touid);
            $friend = isset($query[0]) ? $query[0] : '';
            if($friend) {
                $_G[$var] = $_G[$fvar] = true;
                if($isfull) {
                    $fvarinfo = "home_friend_info_{$touid}_{$_G['uid']}";
                    $_G[$fvarinfo] = $friend;
                }
            } else {
                $_G[$var] = $_G[$fvar] = false;
            }
        }
        return $_G[$var];
    }
}

/**
 * 檢查指定用戶是否向當前用戶發送了友人請求
 *
 * @param int $touid 目標用戶ID
 * @return bool 返回目標用戶是否發送了友人請求
 */
function friend_request_check($touid) {
    global $_G;

    $var = "home_friend_request_{$touid}";
    if(!isset($_G[$var])) {
        $result = C::t('home_friend_request')->fetch_by_uid_fuid($_G['uid'], $touid);
        $_G[$var] = $result?true:false;
    }
    return $_G[$var];
}

/**
 * 添加友人關系
 *
 * @param int $touid 目標用戶ID
 * @param int $gid 友人分組ID,默認為0
 * @param string $note 添加友人的備注信息,默認為空
 * @return int 返回執行結果,-2表示目標用戶是當前用戶,-1表示目標用戶已發送添加請求,1表示添加成功
 */
function friend_add($touid, $gid=0, $note='') {
    global $_G;

    if($touid == $_G['uid']) return -2;
    if(friend_check($touid)) return -2;

    include_once libfile('function/stat');
    $freind_request = C::t('home_friend_request')->fetch_by_uid_fuid($_G['uid'], $touid);
    if($freind_request) {
        // 處理已存在的友人請求,建立友人關系
        $setarr = array(
            'uid' => $_G['uid'],
            'fuid' => $freind_request['fuid'],
            'fusername' => addslashes($freind_request['fusername']),
            'gid' => $gid,
            'dateline' => $_G['timestamp']
        );
        C::t('home_friend')->insert($setarr);

        friend_request_delete($touid);

        friend_cache($_G['uid']);

        $setarr = array(
            'uid' => $touid,
            'fuid' => $_G['uid'],
            'fusername' => $_G['username'],
            'gid' => $freind_request['gid'],
            'dateline' => $_G['timestamp']
        );
        C::t('home_friend')->insert($setarr);

        addfriendlog($_G['uid'], $touid);
        friend_cache($touid);
        updatestat('friend');
    } else {
        // 處理目標用戶未發送請求的情況,插入新的友人請求
        $to_freind_request = C::t('home_friend_request')->fetch_by_uid_fuid($touid, $_G['uid']);
        if($to_freind_request) {
            return -1;
        }

        $setarr = array(
            'uid' => $touid,
            'fuid' => $_G['uid'],
            'fusername' => $_G['username'],
            'gid' => $gid,
            'note' => $note,
            'dateline' => $_G['timestamp']
        );
        C::t('home_friend_request')->insert($setarr);

        updatestat('addfriend');
    }

    return 1;
}
/**
 * 添加好友
 *
 * @param int $touid 目標用戶的ID
 * @param string $tousername 目標用戶的用戶名
 * @param bool $checkrequest 是否檢查好友請求,默認為true
 * @return bool 返回false表示操作失敗,否則成功
 */
function friend_make($touid, $tousername, $checkrequest=true) {
	global $_G;

	// 檢查是否嘗試添加自己為好友
	if($touid == $_G['uid']) return false;

	// 如果需要檢查好友請求
	if($checkrequest) {
		// 刪除目標用戶向當前用戶發出的好友請求
		$to_freind_request = C::t('home_friend_request')->fetch_by_uid_fuid($touid, $_G['uid']);
		if($to_freind_request) {
			C::t('home_friend_request')->delete_by_uid_fuid($touid, $_G['uid']);
		}

		// 刪除當前用戶向目標用戶發出的好友請求
		$to_freind_request = C::t('home_friend_request')->fetch_by_uid_fuid($_G['uid'], $touid);
		if($to_freind_request) {
			C::t('home_friend_request')->delete_by_uid_fuid($_G['uid'], $touid);
		}
	}

	// 插入兩條好友記錄,互為好友
	$insertarray = array(
		'uid' => $touid,
		'fuid' => $_G['uid'],
		'fusername' => $_G['username'],
		'dateline' => $_G['timestamp'],
	);
	C::t('home_friend')->insert($insertarray, false, true);

	$insertarray = array(
		'uid' => $_G['uid'],
		'fuid' => $touid,
		'fusername' => $tousername,
		'dateline' => $_G['timestamp'],
	);
	C::t('home_friend')->insert($insertarray, false, true);

	// 添加好友操作日志
	addfriendlog($_G['uid'], $touid);
	// 更新統計信息
	include_once libfile('function/stat');
	updatestat('friend');
	// 更新好友緩存
	friend_cache($touid);
	friend_cache($_G['uid']);
}

/**
 * 添加好友日志
 *
 * @param int $uid 發起操作的用戶ID
 * @param int $touid 被操作的用戶ID
 * @param string $action 操作類型,默認為'add'
 * @return bool 返回true表示日志添加成功,false表示添加失敗
 */
function addfriendlog($uid, $touid, $action = 'add') {
	global $_G;

	// 檢查是否提供了有效的用戶ID
	if($uid && $touid) {
		$flog = array(
				'uid' => $uid > $touid ? $uid : $touid,
				'fuid' => $uid > $touid ? $touid : $uid,
				'dateline' => $_G['timestamp'],
				'action' => $action
		);
		DB::insert('home_friendlog', $flog, false, true);
		return true;
	}

	return false;

}

/**
 * 增加好友數量統計
 *
 * @param int $touid 目標用戶的ID
 */
function friend_addnum($touid) {
	global $_G;

	// 檢查是否為當前用戶ID,且不為自身
	if($_G['uid'] && $_G['uid'] != $touid) {
		C::t('home_friend')->update_num_by_uid_fuid(1, $_G['uid'], $touid);
	}
}

/**
 * 更新好友緩存
 *
 * @param int $touid 用戶ID
 */
function friend_cache($touid) {
	global $_G;

	// 合并用戶空間信息
	$tospace = array('uid' => $touid);
	space_merge($tospace, 'field_home');

	// 獲取過濾組ID
	$filtergids = empty($tospace['privacy']['filter_gid'])?array():$tospace['privacy']['filter_gid'];

	$uids = array();
	$count = 0;
	$fcount = 0;
	// 獲取所有好友信息
	$query = C::t('home_friend')->fetch_all_by_uid($touid, 0, 0, true);
	foreach($query as $value) {
		// 排除自身
		if($value['fuid'] == $touid) continue;
		// 達到緩存好友數量上限
		if($fcount > 200) {
			$count = count($query);
			break;
		} elseif(empty($filtergids) || !in_array($value['gid'], $filtergids)) {
			$uids[] = $value['fuid'];
			$fcount++;
		}
		$count++;
	}
	// 更新用戶的好友列表緩存和好友數量
	C::t('common_member_field_home')->update($touid, array('feedfriend'=>implode(',', $uids)));
	C::t('common_member_count')->update($touid, array('friends'=>$count));
}

/**
 * 刪除好友請求
 * @param int $touid 目標用戶的UID
 * @return bool 刪除操作的結果,成功返回true,失敗返回false
 */
function friend_request_delete($touid) {
	global $_G;

	// 通過UID和目標UID刪除好友請求
	return C::t('home_friend_request')->delete_by_uid_fuid($_G['uid'], $touid);
}

/**
 * 刪除好友
 * @param int $touid 目標用戶的UID
 * @return bool 刪除操作的結果,成功返回true,失敗返回false
 * 注:如果目標用戶不是好友,則不執行刪除操作并返回false。
 */
function friend_delete($touid) {
	global $_G;

	// 檢查是否為好友,如果不是則直接返回false
	if(!friend_check($touid)) return false;

	// 刪除好友關系
	C::t('home_friend')->delete_by_uid_fuid_dual($_G['uid'], $touid);

	// 如果刪除操作影響了行數(即刪除成功),則進行后續操作
	if(DB::affected_rows()) {
		// 添加刪除好友的日志
		addfriendlog($_G['uid'], $touid, 'delete');
		// 更新好友緩存
		friend_cache($_G['uid']);
		friend_cache($touid);
	}
}

?>

帖子永久地址: 

新秀網絡驗證系統 - 論壇版權1、本主題所有言論和圖片純屬會員個人意見,與本論壇立場無關
2、本站所有主題由該帖子作者發表,該帖子作者與新秀網絡驗證系統享有帖子相關版權
3、其他單位或個人使用、轉載或引用本文時必須同時征得該帖子作者和新秀網絡驗證系統的同意
4、帖子作者須承擔一切因本文發表而直接或間接導致的民事或刑事法律責任
5、本帖部分內容轉載自其它媒體,但并不代表本站贊同其觀點和對其真實性負責
6、如本帖侵犯到任何版權問題,請立即告知本站,本站將及時予與刪除并致以最深的歉意
7、新秀網絡驗證系統管理員和版主有權不事先通知發貼者而刪除本文

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

QQ|Archiver|手機版|新秀網絡驗證系統API[軟著登字第13061951號] ( 豫ICP備2021033257號-1 )

GMT+8, 2025-12-16 13:24 , Processed in 0.234045 second(s), 62 queries , Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表
国产精品爱啪在线线免费观看_97视频精品_欧美精品一区二区在线播放_国产欧美久久一区二区三区
亚洲欧洲日产国码二区| 亚洲福利一二三区| 欧美激情综合在线| 亚洲色图.com| 日精品一区二区三区| 午夜精品福利一区二区三区av | 国产精品久久久久久久久图文区 | 精品国产精品一区二区夜夜嗨| 欧美久久免费观看| 亚洲色欲色欲www| 免费观看成人鲁鲁鲁鲁鲁视频| 国产精品一级二级三级| 黑人一区二区三区四区五区| 久久久xxx| 久久久av毛片精品| 午夜精品久久久久久久久久| 欧美日韩精品一区二区三区四区| 精品国产免费久久| 秋霞成人午夜伦在线观看| 国产综合18久久久久久| 6080日韩午夜伦伦午夜伦| 亚洲麻豆国产自偷在线| eeuss鲁一区二区三区| 色婷婷激情综合| 国产精品白丝在线| 国产欧美三级| 欧美xxxx在线观看| 狠狠久久亚洲欧美| 国产一区二区你懂的| 国产精品天天摸av网| 波波电影院一区二区三区| 欧美日韩高清影院| 狠狠狠色丁香婷婷综合激情| 亚洲欧美日韩精品久久久| 自拍偷拍国产精品| 亚洲一二三区在线| 亚洲女性喷水在线观看一区| 国产一区在线免费观看| 国产精品国产精品国产专区不片| 欧美成人高清| 亚洲综合免费观看高清完整版在线 | 日韩精品一二区| 91高清在线观看| 美日韩黄色大片| 日韩欧美国产麻豆| 国产精品分类| 亚洲黄色小说网站| 久久99伊人| 国产大陆精品国产| 日本一区二区三级电影在线观看| 欧美日韩一视频区二区| 亚洲免费av在线| 欧美日韩性生活| 国产91富婆露脸刺激对白| 久久久久久久综合| av成人免费观看| 久久国产精品一区二区| 久久婷婷色综合| 99一区二区| 欧美日韩国产高清一区二区三区 | 日韩午夜激情免费电影| 欧美va亚洲va日韩∨a综合色| 国产精品伦一区二区三级视频| 亚洲国产高清一区| 韩国成人在线视频| 亚洲电影一区二区三区| 久久久蜜桃一区二区人| 94-欧美-setu| 日韩中文字幕不卡| 国产日韩欧美亚洲| 在线中文字幕一区| 欧美色123| 成人永久aaa| 日韩高清在线不卡| 国产精品网站在线播放| 在线观看日韩高清av| 亚洲欧洲视频| eeuss鲁一区二区三区| 免费人成精品欧美精品| 日本一区二区动态图| 777亚洲妇女| 欧美在线观看一二区| 国产精品毛片在线看| 国产一区高清视频| 午夜精品网站| 久久久久国产免费免费| 久久国产99| 黄色日韩精品| 欧美日本亚洲韩国国产| jiyouzz国产精品久久| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 亚洲欧美偷拍另类a∨色屁股| 久久新电视剧免费观看| 精品日韩av一区二区| 日韩精品影音先锋| 欧美本精品男人aⅴ天堂| 6080yy午夜一二三区久久| 久久久99爱| 久久99久久99精品免视看婷婷 | 国产欧美大片| 国产精品欧美日韩一区| 极品av少妇一区二区| 国产日韩欧美综合精品| 狼狼综合久久久久综合网| 在线观看日韩一区| 精品成人在线观看| 亚洲欧美综合另类在线卡通| 亚洲精品第1页| 免费高清在线一区| 99re热视频这里只精品| 亚洲乱亚洲高清| 欧美日韩国产一区二区三区地区| 26uuu亚洲综合色欧美| 国产精品视频yy9299一区| 亚洲高清免费一级二级三级| 亚洲欧美日韩另类精品一区二区三区| 久久人人97超碰国产公开结果| 日本乱人伦aⅴ精品| 欧美激情一区二区三区四区| 香蕉乱码成人久久天堂爱免费| 成人一道本在线| 亚欧美中日韩视频| 亚洲国产精品高清| 国产一区亚洲一区| 亚洲一区二三| 欧美激情中文不卡| 国产91清纯白嫩初高中在线观看| 夜夜嗨av一区二区三区网站四季av| 欧美久久久久中文字幕| 中文字幕免费不卡在线| 国内成人精品2018免费看| a91a精品视频在线观看| 久久久99精品久久| 国产91丝袜在线播放九色| 久久久久国产一区二区| 自拍偷拍国产亚洲| 91免费在线播放| 久久网这里都是精品| 国产**成人网毛片九色 | 亚洲国产高清视频| 中文av一区二区| 欧美精品九九| 最新成人av在线| 欧美日韩一卡| 亚洲色图丝袜美腿| 欧美日韩一区二区视频在线| 精品电影一区二区| 成人精品鲁一区一区二区| 5月丁香婷婷综合| 91女人视频在线观看| 国产精品国产三级国产专播品爱网| 成人黄色在线视频| 欧美大片在线观看| 欧美精品综合| 国产精品久久久久久福利一牛影视| 欧美91大片| 一区二区免费看| 色偷偷久久人人79超碰人人澡| 国产亚洲欧美另类一区二区三区| 一区二区视频在线| 久久午夜精品| 国产一区二区成人久久免费影院| 日韩写真欧美这视频| 欧美日韩国产在线一区| 亚洲一区二区三区自拍| 欧美性生交片4| 欧美不卡三区| 秋霞午夜鲁丝一区二区老狼| 7777精品伊人久久久大香线蕉 | 69堂精品视频| 一区精品久久| 精品一区二区三区在线播放| 久久久久9999亚洲精品| 免费看亚洲片| 91网站视频在线观看| 亚洲成人av福利| 精品国产免费一区二区三区香蕉| 亚洲一区二区三区高清不卡| 国产一区二区伦理| 亚洲精品水蜜桃| 久久精品人人做人人综合 | 国产精品www.| 国产精品538一区二区在线| 亚洲国产日产av| 国产欧美一区二区三区在线看蜜臀 | 中文字幕精品在线不卡| 日韩精品中午字幕| 91.麻豆视频| 欧美色网站导航| 国产精品夜夜夜一区二区三区尤| 国产激情视频一区二区在线观看| 亚洲精品免费电影| 国产精品大尺度| 久久精品一区二区三区不卡牛牛 | 欧美激情一区在线观看| 91精品欧美一区二区三区综合在| 日本乱码高清不卡字幕| 久久国产欧美| 亚洲综合不卡| 国产精品伊人日日|