public BirthdayEvent(Core core, User owner, User user, int year) : base(core) { this.owner = owner; this.user = user; if (!user.IsFriend(owner.ItemKey)) { throw new InvalidEventException(); } UnixTime tz = new UnixTime(core, user.UserInfo.TimeZoneCode); this.eventId = ~user.Id; this.subject = user.TitleNameOwnership + " birthday"; this.description = string.Empty; this.views = 0; this.attendeeCount = 0; this.ownerKey = new ItemKey(owner.Id, owner.TypeId); this.userId = user.Id; this.startTimeRaw = tz.GetUnixTimeStamp(new DateTime(year, user.Profile.DateOfBirth.Month, user.Profile.DateOfBirth.Day, 0, 0, 0)); this.endTimeRaw = tz.GetUnixTimeStamp(new DateTime(year, user.Profile.DateOfBirth.Month, user.Profile.DateOfBirth.Day, 23, 59, 59)); this.allDay = true; this.invitees = 0; this.category = 0; this.location = string.Empty; }
public UserGuestBook(Core core, User owner) : base(core) { this.db = core.Db; this.owner = owner; }
public FriendGroup(Core core, User owner, DataRow friendGroupRow) : base(core) { ItemLoad += new ItemLoadHandler(FriendGroup_ItemLoad); this.owner = owner; loadItemInfo(friendGroupRow); }
public UploadForm(Core core, PPage page) { this.core = core; this.page = page; this.db = core.Db; this.template = core.Template; this.Owner = page.Owner; this.LoggedInMember = core.Session.LoggedInMember; }
/// <summary> /// Initializes a new instance of the ControlPanelSubModule class. /// </summary> /// <param name="core">The Core token.</param> public ControlPanelSubModule(Core core, Primitive owner) { this.core = core; this.db = core.Db; this.session = core.Session; this.tz = core.Tz; this.LoggedInMember = session.LoggedInMember; this.Owner = owner; core.Prose.AddApplication(Assembly.GetAssembly(this.GetType()).GetName().Name); }
public Access(Core core, IPermissibleItem item) { if (core == null) { throw new NullCoreException(); } this.core = core; this.item = item; this.owner = item.Owner; this.itemKey = item.ItemKey; this.viewer = core.Session.LoggedInMember; }
internal Access(Core core, ItemKey key, Primitive leafOwner) { if (core == null) { throw new NullCoreException(); } this.core = core; this.item = null; this.owner = leafOwner; this.itemKey = key; this.viewer = core.Session.LoggedInMember; }
public ForumMember(Core core, Primitive owner, User user) : base(core) { ItemLoad += new ItemLoadHandler(ForumMember_ItemLoad); // load the info into a the new object being created this.userInfo = user.UserInfo; this.userProfile = user.Profile; this.userStyle = user.Style; this.userId = user.UserId; this.userName = user.UserName; this.domain = user.UserDomain; this.emailAddresses = user.EmailAddresses; SelectQuery sQuery = ForumMember.GetSelectQueryStub(core, typeof(ForumMember)); sQuery.AddCondition("user_id", user.Id); sQuery.AddCondition("item_id", owner.Id); sQuery.AddCondition("item_type_id", owner.TypeId); try { System.Data.Common.DbDataReader memberReader = core.Db.ReaderQuery(sQuery); if (memberReader.HasRows) { memberReader.Read(); loadItemInfo(memberReader); memberReader.Close(); memberReader.Dispose(); } else { memberReader.Close(); memberReader.Dispose(); throw new InvalidForumMemberException(); } } catch (InvalidItemException) { throw new InvalidForumMemberException(); } }
public TopicReplied(Core core, User user, long topicId) : base(core) { ItemLoad += new ItemLoadHandler(TopicReplied_ItemLoad); SelectQuery query = GetSelectQueryStub(); query.AddCondition("topic_id", topicId); query.AddCondition("user_id", user.Id); DataTable itemTable = db.Query(query); if (itemTable.Rows.Count == 1) { loadItemInfo(itemTable.Rows[0]); } else { throw new InvalidTopicReadStatusException(); } }
public MusicianMember(Core core, Musician owner, User user) : base(core) { // load the info into a the new object being created this.userInfo = user.UserInfo; this.userProfile = user.Profile; this.userStyle = user.Style; this.userId = user.UserId; this.userName = user.UserName; this.domain = user.UserDomain; this.emailAddresses = user.EmailAddresses; SelectQuery sQuery = MusicianMember.GetSelectQueryStub(core, typeof(MusicianMember)); sQuery.AddCondition("user_id", user.Id); sQuery.AddCondition("musician_id", owner.Id); try { System.Data.Common.DbDataReader reader = core.Db.ReaderQuery(sQuery); if (reader.HasRows) { reader.Read(); loadItemInfo(typeof(MusicianMember), reader); reader.Close(); reader.Dispose(); } else { reader.Close(); reader.Dispose(); throw new InvalidMusicianMemberException(); } } catch (InvalidItemException) { throw new InvalidMusicianMemberException(); } }
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; }
protected void Page_Load(object sender, EventArgs e) { string profileUserName = Request.QueryString["un"]; User profileOwner; try { profileOwner = new User(core, profileUserName); } catch { core.Functions.Generate404(); return; } Response.ContentType = "text/css"; Response.Clear(); // don't allow to load up external stylesheets if (profileOwner.Style != null) { Response.Write(Regex.Replace(profileOwner.Style.RawCss, "\\@import(.+?)\\;", "", RegexOptions.IgnoreCase)); } if (db != null) { db.CloseConnection(); } core.Prose.Close(); //core.Dispose(); //core = null; Response.End(); }
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 = new List<long> { owner.Id }; 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; }
public void GetCan(ushort accessBits, User viewer, out bool canRead, out bool canComment, out bool canCreate, out bool canChange) { bool isNetworkMember = IsNetworkMember(viewer.ItemKey); switch (NetworkType) { case NetworkTypes.Country: case NetworkTypes.Global: if (isNetworkMember) { canRead = true; canComment = true; canCreate = true; canChange = false; } else { canRead = true; canComment = false; canCreate = false; canChange = false; } break; case NetworkTypes.University: case NetworkTypes.School: case NetworkTypes.Workplace: if (isNetworkMember) { canRead = true; canComment = true; canCreate = true; canChange = false; } else { canRead = false; canComment = false; canCreate = false; canChange = false; } break; default: canRead = false; canComment = false; canCreate = false; canChange = false; break; } }
public override bool CanModerateComments(User member) { return false; }
/// <summary> /// returns true on success /// </summary> /// <param name="page"></param> /// <param name="member"></param> /// <returns></returns> public bool Activate(TPage page, User member, string activateKey) { long rowsChanged = db.UpdateQuery(string.Format("UPDATE network_members SET member_active = 1 WHERE network_id = {0} AND user_id = {1} AND member_activate_code = '{2}' AND member_active = 0;", networkId, member.UserId, activateKey)); db.UpdateQuery(string.Format("UPDATE network_info SET network_members = network_members + {1} WHERE network_id = {0}", networkId, rowsChanged)); if (rowsChanged == 1) { networkMemberCache.Add(member.ItemKey, true); return true; } else { return false; } }
public static List<Network> GetUserNetworks(Core core, User member) { List<Network> networks = new List<Network>(); SelectQuery query = Network.GetSelectQueryStub(core, NetworkLoadOptions.All); query.AddJoin(JoinTypes.Inner, new DataField(typeof(Network), "network_id"), new DataField(typeof(NetworkMember), "network_id")); query.AddCondition("user_id", member.Id); DataTable networksTable = core.Db.Query(query); foreach (DataRow dr in networksTable.Rows) { networks.Add(new Network(core, dr, NetworkLoadOptions.Common)); } return networks; }
public static List<NetworkMember> GetNetworkMemberships(Core core, User member) { List<NetworkMember> memberships = new List<NetworkMember>(); SelectQuery query = NetworkMember.GetSelectQueryStub(core, UserLoadOptions.Key); query.AddCondition("user_id", member.Id); DataTable membershipsTable = core.Db.Query(query); foreach (DataRow dr in membershipsTable.Rows) { memberships.Add(new NetworkMember(core, dr, UserLoadOptions.Key)); } return memberships; }
public override bool IsItemOwner(User member) { return false; }
/// <summary> /// Increment the number of views /// </summary> /// <param name="viewer">Person viewing the gallery item</param> public void Viewed(User viewer) { if (viewer != null) { if (owner is User) { if (viewer.UserId == ((User)owner).UserId) { return; } } db.UpdateQuery(string.Format("UPDATE blog_postings SET post_views = post_views + 1 WHERE post_id = {0};", postId)); // otherwise just update the view count } return; }
public static void ShowMore(Core core, User owner) { long newestId = core.Functions.RequestLong("newest-id", 0); long oldestId = core.Functions.RequestLong("oldest-id", 0); long newerId = 0; bool moreContent = false; long lastId = 0; List<Action> feedActions = null; if (newestId > 0) { feedActions = CombinedFeed.GetNewerItems(core, owner, newestId); } else { feedActions = CombinedFeed.GetItems(core, owner, 1, 20, oldestId, out moreContent); } if (feedActions != null) { JsonSerializer js; StringWriter jstw; JsonTextWriter jtw; js = new JsonSerializer(); jstw = new StringWriter(); jtw = new JsonTextWriter(jstw); js.NullValueHandling = NullValueHandling.Ignore; core.Http.WriteJson(js, feedActions); } if (core.Db != null) { core.Db.CloseConnection(); } core.Http.End(); }
public UserSettings(User user) { this.user = user; }
public ItemSubscribedEventArgs(User rater, ItemKey itemKey) { this.rater = rater; this.itemKey = itemKey; }
public static void Show(Core core, TPage page, User owner) { if (core == null) { throw new NullCoreException(); } if (!owner.Access.Can("VIEW")) { core.Functions.Generate403(); return; } if (core.ResponseFormat == ResponseFormats.Xml) { ShowMore(core, page, owner); return; } core.Template.SetTemplate("Profile", "viewfeed"); if (core.Session.IsLoggedIn && owner == core.Session.LoggedInMember) { core.Template.Parse("OWNER", "TRUE"); } core.Template.Parse("PAGE_TITLE", core.Prose.GetString("FEED")); PermissionGroupSelectBox permissionSelectBox = new PermissionGroupSelectBox(core, "permissions", owner.ItemKey); core.Template.Parse("S_STATUS_PERMISSIONS", permissionSelectBox); bool moreContent; long lastId = 0; bool first = true; List<Action> feedActions = CombinedFeed.GetItems(core, owner, page.TopLevelPageNumber, 20, page.TopLevelPageOffset, out moreContent); foreach (Action feedAction in feedActions) { if (first) { first = false; core.Template.Parse("NEWEST_ID", feedAction.Id.ToString()); } VariableCollection feedItemVariableCollection = core.Template.CreateChild("feed_days_list.feed_item"); core.Display.ParseBbcode(feedItemVariableCollection, "TITLE", feedAction.FormattedTitle); core.Display.ParseBbcode(feedItemVariableCollection, "TEXT", feedAction.Body, core.PrimitiveCache[feedAction.OwnerId], true, string.Empty, string.Empty); feedItemVariableCollection.Parse("USER_DISPLAY_NAME", feedAction.Owner.DisplayName); feedItemVariableCollection.Parse("ID", feedAction.ActionItemKey.Id); feedItemVariableCollection.Parse("TYPE_ID", feedAction.ActionItemKey.TypeId); if (feedAction.ActionItemKey.GetType(core).Likeable) { feedItemVariableCollection.Parse("LIKEABLE", "TRUE"); if (feedAction.Info.Likes > 0) { feedItemVariableCollection.Parse("LIKES", string.Format(" {0:d}", feedAction.Info.Likes)); feedItemVariableCollection.Parse("DISLIKES", string.Format(" {0:d}", feedAction.Info.Dislikes)); } } if (feedAction.ActionItemKey.GetType(core).Commentable) { feedItemVariableCollection.Parse("COMMENTABLE", "TRUE"); if (feedAction.Info.Comments > 0) { feedItemVariableCollection.Parse("COMMENTS", string.Format(" ({0:d})", feedAction.Info.Comments)); } } //Access access = new Access(core, feedAction.ActionItemKey, true); if (feedAction.PermissiveParent.Access.IsPublic()) { feedItemVariableCollection.Parse("IS_PUBLIC", "TRUE"); if (feedAction.ActionItemKey.GetType(core).Shareable) { feedItemVariableCollection.Parse("SHAREABLE", "TRUE"); //feedItemVariableCollection.Parse("U_SHARE", feedAction.ShareUri); if (feedAction.Info.SharedTimes > 0) { feedItemVariableCollection.Parse("SHARES", string.Format(" {0:d}", feedAction.Info.SharedTimes)); } } } else { feedItemVariableCollection.Parse("IS_PUBLIC", "FALSE"); feedItemVariableCollection.Parse("SHAREABLE", "FALSE"); } if (feedAction.Owner is User) { feedItemVariableCollection.Parse("USER_TILE", ((User)feedAction.Owner).Tile); feedItemVariableCollection.Parse("USER_ICON", ((User)feedAction.Owner).Icon); } lastId = feedAction.Id; } core.Display.ParseBlogPagination(core.Template, "PAGINATION", core.Hyperlink.BuildCombinedFeedUri((User)owner), 0, moreContent ? lastId : 0); core.Template.Parse("U_NEXT_PAGE", core.Hyperlink.BuildCombinedFeedUri((User)owner) + "?p=" + (core.TopLevelPageNumber + 1) + "&o=" + lastId); /* pages */ core.Display.ParsePageList(owner, true); List<string[]> breadCrumbParts = new List<string[]>(); breadCrumbParts.Add(new string[] { "*profile", core.Prose.GetString("PROFILE") }); breadCrumbParts.Add(new string[] { "feed", core.Prose.GetString("FEED") }); owner.ParseBreadCrumbs(breadCrumbParts); }
public static void ShowMore(Core core, TPage page, User owner) { if (core == null) { throw new NullCoreException(); } Template template = new Template("pane.feeditem.html"); template.Medium = core.Template.Medium; template.SetProse(core.Prose); bool moreContent = false; long lastId = 0; List<Action> feedActions = CombinedFeed.GetItems(core, owner, page.TopLevelPageNumber, 20, page.TopLevelPageOffset, out moreContent); foreach (Action feedAction in feedActions) { VariableCollection feedItemVariableCollection = template.CreateChild("feed_days_list.feed_item"); core.Display.ParseBbcode(feedItemVariableCollection, "TITLE", feedAction.FormattedTitle); core.Display.ParseBbcode(feedItemVariableCollection, "TEXT", feedAction.Body, core.PrimitiveCache[feedAction.OwnerId], true, string.Empty, string.Empty); feedItemVariableCollection.Parse("USER_DISPLAY_NAME", feedAction.Owner.DisplayName); feedItemVariableCollection.Parse("ID", feedAction.ActionItemKey.Id); feedItemVariableCollection.Parse("TYPE_ID", feedAction.ActionItemKey.TypeId); if (feedAction.ActionItemKey.GetType(core).Likeable) { feedItemVariableCollection.Parse("LIKEABLE", "TRUE"); if (feedAction.Info.Likes > 0) { feedItemVariableCollection.Parse("LIKES", string.Format(" {0:d}", feedAction.Info.Likes)); feedItemVariableCollection.Parse("DISLIKES", string.Format(" {0:d}", feedAction.Info.Dislikes)); } } if (feedAction.ActionItemKey.GetType(core).Commentable) { feedItemVariableCollection.Parse("COMMENTABLE", "TRUE"); if (feedAction.Info.Comments > 0) { feedItemVariableCollection.Parse("COMMENTS", string.Format(" ({0:d})", feedAction.Info.Comments)); } } //Access access = new Access(core, feedAction.ActionItemKey, true); if (feedAction.PermissiveParent.Access.IsPublic()) { feedItemVariableCollection.Parse("IS_PUBLIC", "TRUE"); if (feedAction.ActionItemKey.GetType(core).Shareable) { feedItemVariableCollection.Parse("SHAREABLE", "TRUE"); //feedItemVariableCollection.Parse("U_SHARE", feedAction.ShareUri); if (feedAction.Info.SharedTimes > 0) { feedItemVariableCollection.Parse("SHARES", string.Format(" {0:d}", feedAction.Info.SharedTimes)); } } } if (feedAction.Owner is User) { feedItemVariableCollection.Parse("USER_TILE", ((User)feedAction.Owner).Tile); feedItemVariableCollection.Parse("USER_ICON", ((User)feedAction.Owner).Icon); } lastId = feedAction.Id; } string loadMoreUri = core.Hyperlink.BuildHomeUri() + "?p=" + (core.TopLevelPageNumber + 1) + "&o=" + lastId; core.Response.SendRawText(moreContent ? loadMoreUri : "noMoreContent", template.ToString()); }
public NetworkMember Join(Core core, User member, string networkEmail) { string activateKey = User.GenerateActivationSecurityToken(); if (!IsValidNetworkEmail(networkEmail) && networkInfo.RequireConfirmation) { return null; } if (IsNetworkMember(member.ItemKey)) { return null; } int isActive = (networkInfo.RequireConfirmation) ? 0 : 1; // delete any existing unactivated e-mails for this user in this network, re-send the invitation db.BeginTransaction(); try { NetworkMember nm = new NetworkMember(core, this, member); if (!nm.IsMemberActive) { try { UserEmail uMail = new UserEmail(core, nm.MemberEmail); uMail.Delete(); } catch (InvalidUserEmailException) { // Do Nothing } nm.Delete(); } } catch (InvalidUserException) { // Do Nothing } if (!networkInfo.RequireConfirmation) { UpdateQuery uQuery = new UpdateQuery(GetTable(typeof(Network))); uQuery.AddField("network_members", new QueryOperation("network_members", QueryOperations.Addition, 1)); uQuery.AddCondition("network_id", networkId); db.Query(uQuery); } InsertQuery iQuery = new InsertQuery(GetTable(typeof(NetworkMember))); iQuery.AddField("network_id", this.Id); iQuery.AddField("user_id", member.UserId); iQuery.AddField("member_join_date_ut", UnixTime.UnixTimeStamp()); iQuery.AddField("member_join_ip", core.Session.IPAddress.ToString()); iQuery.AddField("member_email", networkEmail); iQuery.AddField("member_active", isActive); iQuery.AddField("member_activate_code", activateKey); db.Query(iQuery); NetworkMember newMember = new NetworkMember(core, this, member); string activateUri = string.Format("http://zinzam.com/network/{0}?mode=activate&id={1}&key={2}", networkNetwork, member.UserId, activateKey); if (networkInfo.RequireConfirmation) { EmailAddressTypes emailType = EmailAddressTypes.Other; switch (networkInfo.NetworkType) { case NetworkTypes.School: case NetworkTypes.University: emailType = EmailAddressTypes.Student; break; case NetworkTypes.Workplace: emailType = EmailAddressTypes.Business; break; } UserEmail registrationEmail = UserEmail.Create(core, newMember, networkEmail, emailType, true); Template emailTemplate = new Template(core.Http.TemplateEmailPath, "join_network.html"); emailTemplate.Parse("SITE_TITLE", core.Settings.SiteTitle); emailTemplate.Parse("U_SITE", core.Hyperlink.StripSid(core.Hyperlink.AppendAbsoluteSid(core.Hyperlink.BuildHomeUri()))); emailTemplate.Parse("TO_NAME", member.DisplayName); emailTemplate.Parse("U_ACTIVATE", activateUri); emailTemplate.Parse("S_EMAIL", networkEmail); core.Email.SendEmail(networkEmail, core.Settings.SiteTitle + " Network Registration Confirmation", emailTemplate); } return newMember; }
public static List<Action> GetItems(Core core, User owner, int currentPage, int perPage, long currentOffset, out bool moreContent) { double pessimism = 2.0; if (core == null) { throw new NullCoreException(); } List<Action> feedItems = new List<Action>(); moreContent = false; SelectQuery query = Action.GetSelectQueryStub(core, typeof(Action)); query.AddSort(SortOrder.Descending, "action_time_ut"); query.LimitCount = 64; List<long> friendIds = new List<long> { owner.Id }; 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) { DataTable feedTable = core.Db.Query(query); List<IPermissibleItem> tempMessages = new List<IPermissibleItem>(); List<Action> tempActions = new List<Action>(); if (feedTable.Rows.Count == 0) { break; } foreach (DataRow row in feedTable.Rows) { Action action = new Action(core, owner, row); tempActions.Add(action); 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); } core.AcessControlCache.CacheGrants(tempMessages); foreach (Action action in tempActions) { if (action.PermissiveParent.Access.Can("VIEW")) { if (feedItems.Count == perPage) { moreContent = true; break; } else { feedItems.Add(action); } } lastId = action.Id; } //query.LimitStart += query.LimitCount; if (qc1 == null) { qc1 = query.AddCondition("action_id", ConditionEquality.LessThan, lastId); } else { qc1.Value = lastId; } query.LimitCount = (int)(query.LimitCount * pessimism); if (moreContent) { break; } } } } return feedItems; }
public long LoadUserProfile(string username) { PrimitiveKey key = new PrimitiveKey(username, ItemKey.GetTypeId(core, typeof(User))); PrimitiveId pid = null; if (primitivesKeysCached.TryGetValue(key, out pid)) { return pid.Id; } try { User newUser = new User(core, username, UserLoadOptions.All); // This will automatically cache itself when loadUser is called return newUser.Id; } catch (InvalidUserException) { return 0; } }
/// <summary> /// Returns any events the user has on their personal calendar, and any events on group and network calendars that they are attending. /// </summary> /// <param name="owner"></param> /// <param name="startTimeRaw"></param> /// <param name="endTimeRaw"></param> /// <returns></returns> public List<Event> GetMyEvents(User owner, long startTimeRaw, long endTimeRaw) { List<Event> events = new List<Event>(); return events; }
public Dictionary<string, long> LoadUserProfiles(List<string> usernames) { long userTypeId = ItemKey.GetTypeId(core, typeof(User)); List<string> usernameList = new List<string>(); Dictionary<string, long> userIds = new Dictionary<string, long>(8, StringComparer.Ordinal); foreach (string username in usernames) { PrimitiveKey key = new PrimitiveKey(username.ToLower(), userTypeId); if (!primitivesKeysCached.ContainsKey(key)) { usernameList.Add(username.ToLower()); } } if (usernameList.Count > 0) { SelectQuery query = new SelectQuery("user_keys"); query.AddFields(User.GetFieldsPrefixed(core, typeof(User))); query.AddFields(UserInfo.GetFieldsPrefixed(core, typeof(UserInfo))); query.AddFields(UserProfile.GetFieldsPrefixed(core, typeof(UserProfile))); query.AddJoin(JoinTypes.Inner, UserInfo.GetTable(typeof(UserInfo)), "user_id", "user_id"); query.AddJoin(JoinTypes.Inner, UserProfile.GetTable(typeof(UserProfile)), "user_id", "user_id"); query.AddJoin(JoinTypes.Left, new DataField("user_profile", "profile_country"), new DataField("countries", "country_iso")); query.AddJoin(JoinTypes.Left, new DataField("user_profile", "profile_religion"), new DataField("religions", "religion_id")); query.AddCondition(new DataField("user_keys", "user_name_lower"), ConditionEquality.In, usernameList); System.Data.Common.DbDataReader usersReader = db.ReaderQuery(query); while(usersReader.Read()) { User newUser = new User(core, usersReader, UserLoadOptions.All); // This will automatically cache itself when loadUser is called PrimitiveId pid = new PrimitiveId(newUser.Id, userTypeId); PrimitiveKey kid = new PrimitiveKey(newUser.UserName.ToLower(), userTypeId); if (!userIds.ContainsValue(newUser.Id)) { userIds.Add(newUser.UserName, newUser.Id); } } usersReader.Close(); usersReader.Dispose(); } return userIds; }