本文整理汇总了C#中BoxSocial.Internals.User.GetFriendIds方法的典型用法代码示例。如果您正苦于以下问题:C# User.GetFriendIds方法的具体用法?C# User.GetFriendIds怎么用?C# User.GetFriendIds使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BoxSocial.Internals.User
的用法示例。
在下文中一共展示了User.GetFriendIds方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetFriendItems
public static List<StatusMessage> GetFriendItems(Core core, User owner, int limit, int page)
{
if (core == null)
{
throw new NullCoreException();
}
List<long> friendIds = owner.GetFriendIds();
List<StatusMessage> feedItems = new List<StatusMessage>();
if (friendIds.Count > 0)
{
SelectQuery query = StatusMessage.GetSelectQueryStub(core, typeof(StatusMessage));
query.AddSort(SortOrder.Descending, "status_time_ut");
query.AddCondition("user_id", ConditionEquality.In, friendIds);
query.LimitCount = limit;
query.LimitStart = (page - 1) * limit;
// if limit is less than 10, we will only get one for each member
if (limit < 10)
{
//query.AddGrouping("user_id");
// WHERE current
}
System.Data.Common.DbDataReader feedReader = core.Db.ReaderQuery(query);
core.LoadUserProfiles(friendIds);
while(feedReader.Read())
{
feedItems.Add(new StatusMessage(core, core.PrimitiveCache[(long)feedReader["user_id"]], feedReader));
}
feedReader.Close();
feedReader.Dispose();
}
return feedItems;
}
示例2: GetItems
public static List<Action> GetItems(Core core, User owner, int currentPage, int perPage, long currentOffset, out bool moreContent)
{
long initTime = 0;
double pessimism = 2.0;
if (core == null)
{
throw new NullCoreException();
}
List<Action> feedItems = new List<Action>(perPage);
moreContent = false;
SelectQuery query = Action.GetSelectQueryStub(core, typeof(Action));
query.AddSort(SortOrder.Descending, "action_time_ut");
query.LimitCount = 64;
List<long> friendIds = owner.GetFriendIds(100);
if (core.Session.IsLoggedIn)
{
friendIds.Add(core.LoggedInMemberId);
}
// TODO: Add subscriptions to feed
friendIds.AddRange(owner.GetSubscriptionUserIds(100));
if (friendIds.Count > 0)
{
core.LoadUserProfiles(friendIds);
query.AddCondition("action_primitive_id", ConditionEquality.In, friendIds);
query.AddCondition("action_primitive_type_id", ItemKey.GetTypeId(core, typeof(User)));
{
long lastId = 0;
QueryCondition qc1 = null;
if (currentOffset > 0)
{
qc1 = query.AddCondition("action_id", ConditionEquality.LessThan, currentOffset);
}
query.LimitCount = (int)(perPage * pessimism);
while (feedItems.Count <= perPage)
{
List<IPermissibleItem> tempMessages = new List<IPermissibleItem>(perPage);
List<Action> tempActions = new List<Action>(perPage);
System.Data.Common.DbDataReader feedReader = core.Db.ReaderQuery(query);
if (!feedReader.HasRows)
{
feedReader.Close();
feedReader.Dispose();
break;
}
while (feedReader.Read())
{
Action action = new Action(core, owner, feedReader);
tempActions.Add(action);
}
feedReader.Close();
feedReader.Dispose();
foreach (Action action in tempActions)
{
core.PrimitiveCache.LoadPrimitiveProfile(action.OwnerKey);
core.ItemCache.RequestItem(new ItemKey(action.ActionItemKey.GetType(core).ApplicationId, ItemKey.GetTypeId(core, typeof(ApplicationEntry))));
}
foreach (Action action in tempActions)
{
core.ItemCache.RequestItem(action.ActionItemKey);
if (!action.ActionItemKey.Equals(action.InteractItemKey))
{
core.ItemCache.RequestItem(action.InteractItemKey);
}
}
//HttpContext.Current.Response.Write("Time: " + (initTime / 10000000.0) + ", " + core.Db.GetQueryCount() + "<br />");
foreach (Action action in tempActions)
{
/*Stopwatch initTimer = new Stopwatch();
initTimer.Start();*/
tempMessages.Add(action.PermissiveParent);
/*initTimer.Stop();
initTime += initTimer.ElapsedTicks;
HttpContext.Current.Response.Write("Time: " + (initTime / 10000000.0) + ", " + action.ActionItemKey.ToString() + ", " + action.ActionItemKey.ApplicationId + ", " + core.Db.GetQueryCount() + "<br />");*/
}
if (tempMessages.Count > 0)
{
core.AcessControlCache.CacheGrants(tempMessages);
}
foreach (Action action in tempActions)
{
//.........这里部分代码省略.........
示例3: GetNewerItems
public static List<Action> GetNewerItems(Core core, User owner, long newerThanOffset)
{
List<Action> feedItems = new List<Action>(10);
SelectQuery query = Action.GetSelectQueryStub(core, typeof(Action));
query.AddSort(SortOrder.Descending, "action_time_ut");
query.LimitCount = 20;
List<long> friendIds = owner.GetFriendIds(100);
if (core.Session.IsLoggedIn)
{
friendIds.Add(core.LoggedInMemberId);
}
friendIds.AddRange(owner.GetSubscriptionUserIds(100));
QueryCondition qc1 = query.AddCondition("action_id", ConditionEquality.GreaterThan, newerThanOffset);
List<IPermissibleItem> tempMessages = new List<IPermissibleItem>(10);
List<Action> tempActions = new List<Action>(10);
System.Data.Common.DbDataReader feedReader = core.Db.ReaderQuery(query);
if (!feedReader.HasRows)
{
feedReader.Close();
feedReader.Dispose();
return feedItems;
}
while (feedReader.Read())
{
Action action = new Action(core, owner, feedReader);
tempActions.Add(action);
}
feedReader.Close();
feedReader.Dispose();
foreach (Action action in tempActions)
{
core.ItemCache.RequestItem(new ItemKey(action.ActionItemKey.GetType(core).ApplicationId, ItemType.GetTypeId(core, typeof(ApplicationEntry))));
}
foreach (Action action in tempActions)
{
core.ItemCache.RequestItem(action.ActionItemKey);
if (!action.ActionItemKey.Equals(action.InteractItemKey))
{
core.ItemCache.RequestItem(action.InteractItemKey);
}
}
foreach (Action action in tempActions)
{
tempMessages.Add(action.PermissiveParent);
}
if (tempMessages.Count > 0)
{
core.AcessControlCache.CacheGrants(tempMessages);
}
foreach (Action action in tempActions)
{
if (action.PermissiveParent.Access.Can("VIEW"))
{
if (feedItems.Count == 10)
{
break;
}
else
{
feedItems.Add(action);
}
}
}
return feedItems;
}