void AccountPassword_Save(object sender, EventArgs e) { AuthoriseRequestSid(); string password = core.Http.Form["old-password"]; password = User.HashPassword(password); SelectQuery query = new SelectQuery(User.GetTable(typeof(User))); query.AddFields(User.GetFieldsPrefixed(core, typeof(User))); query.AddJoin(JoinTypes.Inner, new DataField(typeof(User), "user_id"), new DataField("user_info", "user_id")); query.AddCondition("user_keys.user_id", core.LoggedInMemberId); query.AddCondition("user_password", password); DataTable userTable = db.Query(query); if (userTable.Rows.Count != 1) { SetError("The old password you entered does not match your old password, make sure you have entered your old password correctly."); return; } else if (core.Http.Form["new-password"] != core.Http.Form["confirm-password"]) { SetError("The passwords you entered do not match, make sure you have entered your desired password correctly."); return; } else if (((string)core.Http.Form["new-password"]).Length < 6) { SetError("The password you entered is too short. Please choose a strong password of 6 characters or more."); return; } UpdateQuery uquery = new UpdateQuery("user_info"); uquery.AddField("user_password", User.HashPassword(core.Http.Form["new-password"])); uquery.AddCondition("user_id", core.LoggedInMemberId); long rowsChanged = db.Query(uquery); if (rowsChanged == 1) { SetInformation("You have successfully changed your password. Keep your password safe and do not share it with anyone."); //SetRedirectUri(BuildUri()); //Display.ShowMessage("Changed Password", "You have successfully changed your password. Keep your password safe and do not share it with anyone."); } else { DisplayGenericError(); return; } }
public static SelectQuery GetSelectQueryStub(Core core, MusicianLoadOptions loadOptions) { SelectQuery query = new SelectQuery(GetTable(typeof(Musician))); query.AddFields(Musician.GetFieldsPrefixed(core, typeof(Musician))); if ((loadOptions & MusicianLoadOptions.Icon) == MusicianLoadOptions.Icon) { query.AddJoin(JoinTypes.Left, new DataField(typeof(Musician), "musician_icon"), new DataField("gallery_items", "gallery_item_id")); query.AddField(new DataField("gallery_items", "gallery_item_uri")); query.AddField(new DataField("gallery_items", "gallery_item_parent_path")); } return query; }
public List<Fan> GetFans(int page, int perPage, string filter) { List<Fan> fans = new List<Fan>(); SelectQuery query = new SelectQuery(typeof(Fan)); query.AddJoin(JoinTypes.Inner, "user_keys", "user_id", "user_id"); query.AddFields(Fan.GetFieldsPrefixed(core, typeof(Fan))); query.AddCondition("musician_id", musicianId); if (!string.IsNullOrEmpty(filter)) { query.AddCondition("user_keys.user_name_first", filter); } query.AddSort(SortOrder.Ascending, "fan_date_ut"); query.LimitStart = (page - 1) * perPage; query.LimitCount = perPage; DataTable fansTable = db.Query(query); List<long> fanIds = new List<long>(); foreach (DataRow dr in fansTable.Rows) { fanIds.Add((long)dr["user_id"]); } core.LoadUserProfiles(fanIds); foreach (DataRow dr in fansTable.Rows) { fans.Add(new Fan(core, dr)); } return fans; }
public List<GroupMember> GetOperators(int page, int perPage) { List<GroupMember> operators = new List<GroupMember>(); SelectQuery query = new SelectQuery("group_operators"); query.AddFields(GroupMember.GetFieldsPrefixed(core, typeof(GroupMember))); query.AddFields(UserInfo.GetFieldsPrefixed(core, typeof(User))); query.AddJoin(JoinTypes.Inner, UserInfo.GetTable(typeof(User)), "user_id", "user_id"); query.AddField(new DataField("group_operators", "user_id")); TableJoin tj = query.AddJoin(JoinTypes.Left, new DataField("group_operators", "user_id"), new DataField("group_members", "user_id")); tj.AddCondition(new DataField("group_members", "group_id"), groupId); query.AddCondition(new DataField("group_operators", "group_id"), groupId); System.Data.Common.DbDataReader membersReader = db.ReaderQuery(query); while(membersReader.Read()) { operators.Add(new GroupMember(core, membersReader)); } membersReader.Close(); membersReader.Dispose(); return operators; }
public UserGroup(Core core, long groupId, UserGroupLoadOptions loadOptions) : base(core) { ItemLoad += new ItemLoadHandler(UserGroup_ItemLoad); bool containsInfoData = false; bool containsIconData = false; if (loadOptions == UserGroupLoadOptions.Key) { try { LoadItem(groupId); } catch (InvalidItemException) { throw new InvalidGroupException(); } } else { SelectQuery query = new SelectQuery(UserGroup.GetTable(typeof(UserGroup))); query.AddFields(UserGroup.GetFieldsPrefixed(core, typeof(UserGroup))); query.AddCondition("`group_keys`.`group_id`", groupId); if ((loadOptions & UserGroupLoadOptions.Info) == UserGroupLoadOptions.Info) { containsInfoData = true; query.AddJoin(JoinTypes.Inner, UserGroupInfo.GetTable(typeof(UserGroupInfo)), "group_id", "group_id"); query.AddFields(UserGroupInfo.GetFieldsPrefixed(core, typeof(UserGroupInfo))); if ((loadOptions & UserGroupLoadOptions.Icon) == UserGroupLoadOptions.Icon) { containsIconData = true; query.AddJoin(JoinTypes.Left, new DataField("group_info", "group_icon"), new DataField("gallery_items", "gallery_item_id")); query.AddField(new DataField("gallery_items", "gallery_item_uri")); query.AddField(new DataField("gallery_items", "gallery_item_parent_path")); } } DataTable groupTable = db.Query(query); if (groupTable.Rows.Count > 0) { loadItemInfo(typeof(UserGroup), groupTable.Rows[0]); if (containsInfoData) { groupInfo = new UserGroupInfo(core, groupTable.Rows[0]); } if (containsIconData) { loadUserGroupIcon(groupTable.Rows[0]); } } else { throw new InvalidGroupException(); } } }
public static SelectQuery GetSelectQueryStub(Core core, NetworkLoadOptions loadOptions) { SelectQuery query = new SelectQuery(Network.GetTable(typeof(Network))); query.AddFields(Network.GetFieldsPrefixed(core, typeof(Network))); if ((loadOptions & NetworkLoadOptions.Info) == NetworkLoadOptions.Info) { query.AddJoin(JoinTypes.Inner, NetworkInfo.GetTable(typeof(NetworkInfo)), "network_id", "network_id"); query.AddFields(NetworkInfo.GetFieldsPrefixed(core, typeof(NetworkInfo))); if ((loadOptions & NetworkLoadOptions.Icon) == NetworkLoadOptions.Icon) { // TODO: Network Icon /*containsIconData = true; query.AddJoin(JoinTypes.Left, new DataField("network_info", "network_icon"), new DataField("gallery_items", "gallery_item_id")); query.AddField(new DataField("gallery_items", "gallery_item_uri")); query.AddField(new DataField("gallery_items", "gallery_item_parent_path"));*/ } } return query; }
public List<SubGroupMember> GetMembers(int page, int perPage, string filter) { List<SubGroupMember> members = new List<SubGroupMember>(); SelectQuery query = new SelectQuery("sub_group_members"); query.AddJoin(JoinTypes.Inner, "user_keys", "user_id", "user_id"); query.AddFields(GroupMember.GetFieldsPrefixed(core, typeof(SubGroupMember))); query.AddCondition("`sub_group_members`.`sub_group_id`", subGroupId); query.AddCondition("sub_group_member_is_leader", false); query.AddCondition("sub_group_member_approved", true); if (!string.IsNullOrEmpty(filter)) { query.AddCondition(new DataField("user_keys", "user_name_first"), filter[0]); } query.AddSort(SortOrder.Ascending, "sub_group_member_date_ut"); query.LimitStart = (page - 1) * perPage; query.LimitCount = perPage; DataTable membersTable = db.Query(query); List<long> memberIds = new List<long>(); foreach (DataRow dr in membersTable.Rows) { memberIds.Add((long)dr["user_id"]); } core.LoadUserProfiles(memberIds); foreach (DataRow dr in membersTable.Rows) { members.Add(new SubGroupMember(core, dr)); } return members; }
public void ApplicationSettings(object sender, EventArgs e) { template.SetTemplate("account_primitive_application_settings.html"); long id = core.Functions.RequestLong("id", 0); if (id == 0) { core.Display.ShowMessage("Error", "Error!"); return; } SelectQuery query = new SelectQuery("primitive_apps"); query.AddFields(ApplicationEntry.GetFieldsPrefixed(core, typeof(ApplicationEntry))); query.AddFields(PrimitiveApplicationInfo.GetFieldsPrefixed(core, typeof(PrimitiveApplicationInfo))); query.AddJoin(JoinTypes.Inner, new DataField("primitive_apps", "application_id"), new DataField("applications", "application_id")); query.AddCondition("primitive_apps.application_id", id); query.AddCondition("item_id", Owner.Id); query.AddCondition("item_type_id", Owner.TypeId); DataTable applicationTable = db.Query(query); if (applicationTable.Rows.Count == 1) { ApplicationEntry ae = new ApplicationEntry(core, applicationTable.Rows[0]); //List<string> applicationPermissions = new List<string>(); //applicationPermissions.Add("Can Access"); template.Parse("APPLICATION_NAME", ae.Title); //core.Display.ParsePermissionsBox(template, "S_GAPPLICATION_PERMS", ae.Permissions, applicationPermissions); template.Parse("S_APPLICATION_ID", ae.ApplicationId.ToString()); string radioChecked = " checked=\"checked\""; if (Owner is User) { template.Parse("S_USER", true); PrimitiveApplicationInfo ownerInfo = new PrimitiveApplicationInfo(core, Owner, ae.Id); if (ownerInfo.EmailNotifications) { template.Parse("S_EMAIL_NOTIFICATIONS_YES", radioChecked); } else { template.Parse("S_EMAIL_NOTIFICATIONS_NO", radioChecked); } } } else { core.Display.ShowMessage("Error", "Error!"); } }
public static SelectQuery GetSelectQueryStub(Core core, UserGroupLoadOptions loadOptions) { SelectQuery query = new SelectQuery(UserGroup.GetTable(typeof(UserGroup))); query.AddFields(UserGroup.GetFieldsPrefixed(core, typeof(UserGroup))); query.AddFields(ItemInfo.GetFieldsPrefixed(core, typeof(ItemInfo))); TableJoin join = query.AddJoin(JoinTypes.Left, new DataField(typeof(UserGroup), "group_id"), new DataField(typeof(ItemInfo), "info_item_id")); join.AddCondition(new DataField(typeof(ItemInfo), "info_item_type_id"), ItemKey.GetTypeId(core, typeof(UserGroup))); if ((loadOptions & UserGroupLoadOptions.Info) == UserGroupLoadOptions.Info) { query.AddJoin(JoinTypes.Inner, UserGroupInfo.GetTable(typeof(UserGroupInfo)), "group_id", "group_id"); query.AddFields(UserGroupInfo.GetFieldsPrefixed(core, typeof(UserGroupInfo))); if ((loadOptions & UserGroupLoadOptions.Icon) == UserGroupLoadOptions.Icon) { query.AddJoin(JoinTypes.Left, new DataField("group_info", "group_icon"), new DataField("gallery_items", "gallery_item_id")); query.AddField(new DataField("gallery_items", "gallery_item_uri")); query.AddField(new DataField("gallery_items", "gallery_item_parent_path")); } } return query; }
public List<Friend> GetFriends(int page, int perPage, string filter, bool sortOnline) { List<Friend> friends = new List<Friend>(); SelectQuery query = new SelectQuery("user_relations"); query.AddFields(User.GetFieldsPrefixed(core, typeof(User))); query.AddFields(UserInfo.GetFieldsPrefixed(core, typeof(UserInfo))); query.AddFields(UserProfile.GetFieldsPrefixed(core, typeof(UserProfile))); query.AddFields(UserRelation.GetFieldsPrefixed(core, typeof(UserRelation))); query.AddField(new DataField("gallery_items", "gallery_item_uri")); query.AddField(new DataField("gallery_items", "gallery_item_parent_path")); query.AddFields(ItemInfo.GetFieldsPrefixed(core, typeof(ItemInfo))); query.AddJoin(JoinTypes.Inner, User.GetTable(typeof(User)), "relation_you", "user_id"); query.AddJoin(JoinTypes.Inner, UserInfo.GetTable(typeof(UserInfo)), "relation_you", "user_id"); query.AddJoin(JoinTypes.Inner, UserProfile.GetTable(typeof(UserProfile)), "relation_you", "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.AddJoin(JoinTypes.Left, new DataField("user_info", "user_icon"), new DataField("gallery_items", "gallery_item_id")); TableJoin join = query.AddJoin(JoinTypes.Left, new DataField(typeof(UserRelation), "relation_you"), new DataField(typeof(ItemInfo), "info_item_id")); join.AddCondition(new DataField(typeof(ItemInfo), "info_item_type_id"), ItemKey.GetTypeId(core, typeof(User))); query.AddCondition("relation_me", userId); query.AddCondition("relation_type", "FRIEND"); if ((!string.IsNullOrEmpty(filter)) && filter.Length == 1) { query.AddCondition(new DataField(typeof(User), "user_name_first"), filter); } if (sortOnline) { query.AddSort(SortOrder.Descending, "user_last_visit_ut"); query.AddSort(SortOrder.Ascending, new QueryCondition("relation_order", ConditionEquality.Equal, 0)); } else { query.AddSort(SortOrder.Ascending, new QueryCondition("relation_order", ConditionEquality.Equal, 0)); } query.LimitStart = (page - 1) * perPage; query.LimitCount = perPage; if (sortOnline) { query.LimitOrder = SortOrder.Descending; } System.Data.Common.DbDataReader friendsReader = db.ReaderQuery(query); while (friendsReader.Read()) { friends.Add(new Friend(core, friendsReader, UserLoadOptions.All)); } friendsReader.Close(); friendsReader.Dispose(); return friends; }
public User(Core core, string userName, UserLoadOptions loadOptions) : base(core) { ItemLoad += new ItemLoadHandler(User_ItemLoad); bool containsInfoData = false; bool containsProfileData = false; bool containsIconData = false; if (loadOptions == UserLoadOptions.Key) { try { LoadItem("user_name_lower", userName.ToLower(), true); } catch (InvalidItemException) { throw new InvalidUserException(); } } else { SelectQuery query = new SelectQuery(User.GetTable(typeof(User))); query.AddFields(User.GetFieldsPrefixed(core, typeof(User))); query.AddCondition(new DataField("user_keys", "user_name_lower"), userName.ToLower()); if ((loadOptions & UserLoadOptions.Info) == UserLoadOptions.Info) { containsInfoData = true; query.AddJoin(JoinTypes.Inner, UserInfo.GetTable(typeof(UserInfo)), "user_id", "user_id"); query.AddFields(UserInfo.GetFieldsPrefixed(core, typeof(UserInfo))); /*if ((loadOptions & UserLoadOptions.Icon) == UserLoadOptions.Icon) { containsIconData = true; query.AddJoin(JoinTypes.Left, new DataField("user_info", "user_icon"), new DataField("gallery_items", "gallery_item_id")); query.AddField(new DataField("gallery_items", "gallery_item_uri")); query.AddField(new DataField("gallery_items", "gallery_item_parent_path")); }*/ } if ((loadOptions & UserLoadOptions.Profile) == UserLoadOptions.Profile) { containsProfileData = true; query.AddJoin(JoinTypes.Inner, UserProfile.GetTable(typeof(UserProfile)), "user_id", "user_id"); query.AddFields(UserProfile.GetFieldsPrefixed(core, typeof(UserProfile))); if ((loadOptions & UserLoadOptions.Country) == UserLoadOptions.Country) { query.AddJoin(JoinTypes.Left, new DataField("user_profile", "profile_country"), new DataField("countries", "country_iso")); } if ((loadOptions & UserLoadOptions.Religion) == UserLoadOptions.Religion) { query.AddJoin(JoinTypes.Left, new DataField("user_profile", "profile_religion"), new DataField("religions", "religion_id")); } } DataTable memberTable = db.Query(query); if (memberTable.Rows.Count > 0) { loadItemInfo(typeof(User), memberTable.Rows[0]); if (containsInfoData) { userInfo = new UserInfo(core, memberTable.Rows[0]); } if (containsProfileData) { userProfile = new UserProfile(core, this, memberTable.Rows[0], loadOptions); } if (containsIconData) { loadUserIcon(memberTable.Rows[0]); } } else { throw new InvalidUserException(); } } }
public List<Friend> GetFriends(string namePart) { List<Friend> friends = new List<Friend>(); SelectQuery query = new SelectQuery("user_relations"); query.AddFields(User.GetFieldsPrefixed(core, typeof(User))); query.AddFields(UserInfo.GetFieldsPrefixed(core, typeof(UserInfo))); query.AddFields(UserProfile.GetFieldsPrefixed(core, typeof(UserProfile))); query.AddFields(UserRelation.GetFieldsPrefixed(core, typeof(UserRelation))); query.AddField(new DataField("gallery_items", "gallery_item_uri")); query.AddField(new DataField("gallery_items", "gallery_item_parent_path")); query.AddFields(ItemInfo.GetFieldsPrefixed(core, typeof(ItemInfo))); query.AddJoin(JoinTypes.Inner, User.GetTable(typeof(User)), "relation_you", "user_id"); query.AddJoin(JoinTypes.Inner, UserInfo.GetTable(typeof(UserInfo)), "relation_you", "user_id"); query.AddJoin(JoinTypes.Inner, UserProfile.GetTable(typeof(UserProfile)), "relation_you", "user_id"); query.AddJoin(JoinTypes.Left, new DataField("user_info", "user_icon"), new DataField("gallery_items", "gallery_item_id")); TableJoin join = query.AddJoin(JoinTypes.Left, new DataField(typeof(UserRelation), "relation_you"), new DataField(typeof(ItemInfo), "info_item_id")); join.AddCondition(new DataField(typeof(ItemInfo), "info_item_type_id"), ItemKey.GetTypeId(core, typeof(User))); query.AddCondition("relation_me", userId); query.AddCondition("relation_type", "FRIEND"); QueryCondition qc1 = query.AddCondition(new DataField("user_info", "user_name"), ConditionEquality.Like, namePart + "%"); qc1.AddCondition(ConditionRelations.Or, new DataField("user_profile", "profile_name_first"), ConditionEquality.Like, namePart + "%"); qc1.AddCondition(ConditionRelations.Or, new DataField("user_info", "user_name_display"), ConditionEquality.Like, namePart + "%"); query.AddSort(SortOrder.Ascending, "(relation_order - 1)"); query.LimitCount = 10; System.Data.Common.DbDataReader friendsReader = db.ReaderQuery(query); while (friendsReader.Read()) { friends.Add(new Friend(core, friendsReader, UserLoadOptions.All)); } friendsReader.Close(); friendsReader.Dispose(); return friends; }
public static SelectQuery GetSelectQueryStub(Core core, UserLoadOptions loadOptions) { long typeId = ItemType.GetTypeId(core, typeof(User)); /*if (loadOptions == UserLoadOptions.All && QueryCache.HasQuery(typeId)) { return (SelectQuery)QueryCache.GetQuery(typeof(User), typeId); } else*/ { #if DEBUG Stopwatch httpTimer = new Stopwatch(); httpTimer.Start(); #endif SelectQuery query = new SelectQuery(GetTable(typeof(User))); query.AddFields(User.GetFieldsPrefixed(core, typeof(User))); query.AddFields(ItemInfo.GetFieldsPrefixed(core, typeof(ItemInfo))); TableJoin join = query.AddJoin(JoinTypes.Left, new DataField(typeof(User), "user_id"), new DataField(typeof(ItemInfo), "info_item_id")); join.AddCondition(new DataField(typeof(ItemInfo), "info_item_type_id"), ItemKey.GetTypeId(core, typeof(User))); if ((loadOptions & UserLoadOptions.Info) == UserLoadOptions.Info) { query.AddJoin(JoinTypes.Inner, UserInfo.GetTable(typeof(UserInfo)), "user_id", "user_id"); query.AddFields(UserInfo.GetFieldsPrefixed(core, typeof(UserInfo))); /*if ((loadOptions & UserLoadOptions.Icon) == UserLoadOptions.Icon) { query.AddJoin(JoinTypes.Left, new DataField("user_info", "user_icon"), new DataField("gallery_items", "gallery_item_id")); query.AddField(new DataField("gallery_items", "gallery_item_uri")); query.AddField(new DataField("gallery_items", "gallery_item_parent_path")); }*/ } if ((loadOptions & UserLoadOptions.Profile) == UserLoadOptions.Profile) { query.AddJoin(JoinTypes.Inner, UserProfile.GetTable(typeof(UserProfile)), "user_id", "user_id"); query.AddFields(UserProfile.GetFieldsPrefixed(core, typeof(UserProfile))); // Countries are cached separately as they do not change /*if ((loadOptions & UserLoadOptions.Country) == UserLoadOptions.Country) { query.AddJoin(JoinTypes.Left, new DataField("user_profile", "profile_country"), new DataField("countries", "country_iso")); }*/ if ((loadOptions & UserLoadOptions.Religion) == UserLoadOptions.Religion) { query.AddJoin(JoinTypes.Left, new DataField("user_profile", "profile_religion"), new DataField("religions", "religion_id")); } } #if DEBUG httpTimer.Stop(); if (HttpContext.Current != null && core.Session != null && core.Session.SessionMethod != SessionMethods.OAuth) { HttpContext.Current.Response.Write(string.Format("<!-- Build user query stub in {0} -->\r\n", httpTimer.ElapsedTicks / 10000000.0)); } #endif /*if (loadOptions == UserLoadOptions.All) { QueryCache.AddQueryToCache(typeId, query); }*/ return query; } }
public List<SubGroupMember> GetMembersWaitingApproval() { List<SubGroupMember> members = new List<SubGroupMember>(); SelectQuery query = new SelectQuery("sub_group_members"); query.AddJoin(JoinTypes.Inner, "user_keys", "user_id", "user_id"); query.AddFields(GroupMember.GetFieldsPrefixed(core, typeof(SubGroupMember))); query.AddCondition("`sub_group_members`.`sub_group_id`", subGroupId); query.AddCondition("sub_group_member_is_leader", false); query.AddCondition("sub_group_member_approved", false); query.AddSort(SortOrder.Ascending, "sub_group_member_date_ut"); DataTable membersTable = db.Query(query); List<long> memberIds = new List<long>(); foreach (DataRow dr in membersTable.Rows) { memberIds.Add((long)dr["user_id"]); } core.LoadUserProfiles(memberIds); foreach (DataRow dr in membersTable.Rows) { members.Add(new SubGroupMember(core, dr)); } return members; }
public static new SelectQuery GetSelectQueryStub(Core core, UserLoadOptions loadOptions) { SelectQuery query = new SelectQuery("user_relations"); query.AddFields(UserRelation.GetFieldsPrefixed(core, typeof(UserRelation))); query.AddFields(User.GetFieldsPrefixed(core, typeof(User))); query.AddFields(ItemInfo.GetFieldsPrefixed(core, typeof(ItemInfo))); query.AddJoin(JoinTypes.Inner, User.GetTable(typeof(User)), "relation_you", "user_id"); TableJoin join = query.AddJoin(JoinTypes.Left, new DataField(typeof(UserRelation), "relation_you"), new DataField(typeof(ItemInfo), "info_item_id")); join.AddCondition(new DataField(typeof(ItemInfo), "info_item_type_id"), ItemKey.GetTypeId(core, typeof(User))); if ((loadOptions & UserLoadOptions.Info) == UserLoadOptions.Info) { query.AddFields(UserInfo.GetFieldsPrefixed(core, typeof(UserInfo))); query.AddJoin(JoinTypes.Inner, UserInfo.GetTable(typeof(UserInfo)), "relation_you", "user_id"); } if ((loadOptions & UserLoadOptions.Profile) == UserLoadOptions.Profile) { query.AddFields(UserProfile.GetFieldsPrefixed(core, typeof(UserProfile))); query.AddJoin(JoinTypes.Inner, UserProfile.GetTable(typeof(UserProfile)), "relation_you", "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")); } /*if ((loadOptions & UserLoadOptions.Icon) == UserLoadOptions.Icon) { query.AddField(new DataField("gallery_items", "gallery_item_uri")); query.AddField(new DataField("gallery_items", "gallery_item_parent_path")); query.AddJoin(JoinTypes.Left, new DataField("user_info", "user_icon"), new DataField("gallery_items", "gallery_item_id")); }*/ return query; }
public UserGroup(Core core, string groupName, UserGroupLoadOptions loadOptions) : base(core) { ItemLoad += new ItemLoadHandler(UserGroup_ItemLoad); bool containsInfoData = false; bool containsIconData = false; if (loadOptions == UserGroupLoadOptions.Key) { try { LoadItem("group_name", groupName); } catch (InvalidItemException) { throw new InvalidGroupException(); } } else { SelectQuery query = new SelectQuery(UserGroup.GetTable(typeof(UserGroup))); query.AddFields(UserGroup.GetFieldsPrefixed(core, typeof(UserGroup))); query.AddCondition("`group_keys`.`group_name`", groupName); if ((loadOptions & UserGroupLoadOptions.Info) == UserGroupLoadOptions.Info) { containsInfoData = true; query.AddJoin(JoinTypes.Inner, UserGroupInfo.GetTable(typeof(UserGroupInfo)), "group_id", "group_id"); query.AddFields(UserGroupInfo.GetFieldsPrefixed(core, typeof(UserGroupInfo))); if ((loadOptions & UserGroupLoadOptions.Icon) == UserGroupLoadOptions.Icon) { containsIconData = true; query.AddJoin(JoinTypes.Left, new DataField("group_info", "group_icon"), new DataField("gallery_items", "gallery_item_id")); query.AddField(new DataField("gallery_items", "gallery_item_uri")); query.AddField(new DataField("gallery_items", "gallery_item_parent_path")); } } System.Data.Common.DbDataReader groupReader = db.ReaderQuery(query); if (groupReader.HasRows) { groupReader.Read(); loadItemInfo(typeof(UserGroup), groupReader); if (containsInfoData) { groupInfo = new UserGroupInfo(core, groupReader); } if (containsIconData) { loadUserGroupIcon(groupReader); } groupReader.Close(); groupReader.Dispose(); } else { groupReader.Close(); groupReader.Dispose(); throw new InvalidGroupException(); } } }
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; }
public List<GroupMember> GetMembers(int page, int perPage, string filter) { List<GroupMember> members = new List<GroupMember>(); SelectQuery query = new SelectQuery("group_members"); query.AddFields(UserInfo.GetFieldsPrefixed(core, typeof(User))); query.AddJoin(JoinTypes.Inner, UserInfo.GetTable(typeof(User)), "user_id", "user_id"); query.AddFields(GroupMember.GetFieldsPrefixed(core, typeof(GroupMember))); query.AddField(new DataField("group_operators", "user_id", "user_id_go")); TableJoin tj = query.AddJoin(JoinTypes.Left, new DataField("group_members", "user_id"), new DataField("group_operators", "user_id")); tj.AddCondition(new DataField("group_members", "group_id"), new DataField("group_operators", "group_id")); query.AddCondition("`group_members`.`group_id`", groupId); query.AddCondition("group_member_approved", true); if (!string.IsNullOrEmpty(filter)) { query.AddCondition(new DataField("user_keys", "user_name_first"), filter[0]); } query.AddSort(SortOrder.Ascending, "group_member_date_ut"); query.LimitStart = (page - 1) * perPage; query.LimitCount = perPage; System.Data.Common.DbDataReader membersReader = db.ReaderQuery(query); while (membersReader.Read()) { members.Add(new GroupMember(core, membersReader)); } membersReader.Close(); membersReader.Dispose(); return members; }
public Network(Core core, long networkId, NetworkLoadOptions loadOptions) : base(core) { ItemLoad += new ItemLoadHandler(Network_ItemLoad); bool containsInfoData = false; bool containsIconData = false; if (loadOptions == NetworkLoadOptions.Key) { try { LoadItem(networkId); } catch (InvalidItemException) { throw new InvalidNetworkException(); } } else { SelectQuery query = new SelectQuery(Network.GetTable(typeof(Network))); query.AddFields(Network.GetFieldsPrefixed(core, typeof(Network))); query.AddCondition("`network_keys`.`network_id`", networkId); if ((loadOptions & NetworkLoadOptions.Info) == NetworkLoadOptions.Info) { containsInfoData = true; query.AddJoin(JoinTypes.Inner, NetworkInfo.GetTable(typeof(NetworkInfo)), "network_id", "network_id"); query.AddFields(NetworkInfo.GetFieldsPrefixed(core, typeof(NetworkInfo))); if ((loadOptions & NetworkLoadOptions.Icon) == NetworkLoadOptions.Icon) { // TODO: Network Icon /*containsIconData = true; query.AddJoin(JoinTypes.Left, new DataField("network_info", "network_icon"), new DataField("gallery_items", "gallery_item_id")); query.AddField(new DataField("gallery_items", "gallery_item_uri")); query.AddField(new DataField("gallery_items", "gallery_item_parent_path"));*/ } } DataTable networkTable = db.Query(query); if (networkTable.Rows.Count > 0) { loadItemInfo(typeof(Network), networkTable.Rows[0]); if (containsInfoData) { networkInfo = new NetworkInfo(core, networkTable.Rows[0]); } if (containsIconData) { // TODO: Network Icon //loadNetworkIcon(networkTable.Rows[0]); } } else { throw new InvalidNetworkException(); } } }
protected void Page_Load(object sender, EventArgs e) { Server.ScriptTimeout = 1000; string assemblyName = core.Http.Query["app"]; string mode = core.Http.Query["mode"]; System.Web.Caching.Cache cache = Cache; cache.Remove("itemFields"); if (mode == "update") { if (core.LoggedInMemberId > 2 || core.LoggedInMemberId == 0) { core.Functions.Generate403(); return; } //List<Primitive> members = new List<Primitive>(); SelectQuery query = new SelectQuery("primitive_apps"); query.AddFields(ApplicationEntry.GetFieldsPrefixed(core, typeof(ApplicationEntry))); query.AddFields(PrimitiveApplicationInfo.GetFieldsPrefixed(core, typeof(PrimitiveApplicationInfo))); query.AddJoin(JoinTypes.Inner, new DataField("primitive_apps", "application_id"), new DataField("applications", "application_id")); query.AddCondition("applications.application_assembly_name", assemblyName); /*SelectQuery query = new SelectQuery("primitive_apps pa"); query.AddFields(ApplicationEntry.APPLICATION_FIELDS); query.AddFields(ApplicationEntry.USER_APPLICATION_FIELDS); query.AddFields(UserInfo.GetFieldsPrefixed(typeof(UserInfo))); query.AddJoin(JoinTypes.Inner, "applications ap", "ap.application_id", "pa.application_id"); query.AddJoin(JoinTypes.Inner, "user_info ui", "pa.item_id", "ui.user_id"); query.AddCondition("pa.item_type", "USER");*/ DataTable userInfoTable = db.Query(query); foreach (DataRow dr in userInfoTable.Rows) { dr["user_id"] = dr["item_id"]; ItemKey itemKey = new ItemKey((long)dr["item_id"], (long)dr["item_type_id"]); core.PrimitiveCache.LoadPrimitiveProfile(itemKey); } foreach (DataRow dr in userInfoTable.Rows) { ItemKey itemKey = new ItemKey((long)dr["item_id"], (long)dr["item_type_id"]); Primitive member = core.PrimitiveCache[itemKey]; //members.Add(member); ApplicationEntry ae = new ApplicationEntry(core, dr); ae.UpdateInstall(core, member); } core.Display.ShowMessage("Application Updated", "The application has been updated for all users."); } else { string assemblyPath = ""; bool isPrimitive = false; bool isInternals = false; switch (assemblyName) { case "Internals": assemblyPath = "BoxSocial.Internals.dll"; isInternals = true; isPrimitive = false; break; case "Groups": case "Networks": assemblyPath = string.Format("{0}.dll", assemblyName); isInternals = false; isPrimitive = true; break; default: assemblyPath = string.Format("applications/{0}.dll", assemblyName); isInternals = false; isPrimitive = false; break; } Assembly loadApplication = Assembly.LoadFrom(Path.Combine(core.Http.AssemblyPath, assemblyPath)); if (isInternals) { BoxSocial.Internals.Application.InstallTables(core, loadApplication); BoxSocial.Internals.Application.InstallTypes(core, loadApplication, 0); Type[] types = loadApplication.GetTypes(); foreach (Type t in types) { //if (t.GetInterfaces(). List<PermissionInfo> permissions = AccessControlLists.GetPermissionInfo(t); foreach (PermissionInfo pi in permissions) { try { ItemType it = new ItemType(core, t.FullName); try { AccessControlPermission acp = new AccessControlPermission(core, it.Id, pi.Key); } catch (InvalidAccessControlPermissionException) { AccessControlPermission.Create(core, it.Id, pi.Key, pi.Description, pi.PermissionType); } } catch (InvalidItemTypeException) { } } } core.Display.ShowMessage("Internals Updated", "Internals have been updated."); } else { Type[] types = loadApplication.GetTypes(); foreach (Type type in types) { if (type.IsSubclassOf(typeof(Application))) { BoxSocial.Internals.Application newApplication = System.Activator.CreateInstance(type, new object[] { core }) as Application; if (newApplication != null) { long updatedRaw = UnixTime.UnixTimeStamp(); long applicationId = 0; SelectQuery query1 = Item.GetSelectQueryStub(core, typeof(ApplicationEntry)); query1.AddCondition("application_assembly_name", assemblyName); /*DataTable applicationTable = db.Query(string.Format(@"SELECT {0} FROM applications ap WHERE application_assembly_name = '{1}'", ApplicationEntry.APPLICATION_FIELDS, Mysql.Escape(assemblyName)));*/ DataTable applicationTable = db.Query(query1); if (applicationTable.Rows.Count == 1) { ApplicationEntry updateApplication = new ApplicationEntry(core, applicationTable.Rows[0]); applicationId = updateApplication.ApplicationId; string updateKey = updateApplication.Key; if (updateApplication.CreatorId == core.LoggedInMemberId) { // // Save Icon // if (newApplication.Icon != null) { if (!Directory.Exists(Server.MapPath(string.Format(@".\images\{0}\", updateKey)))) { Directory.CreateDirectory(Server.MapPath(string.Format(@".\images\{0}\", updateKey))); } newApplication.Icon.Save(Server.MapPath(string.Format(@".\images\{0}\icon.png", updateKey)), System.Drawing.Imaging.ImageFormat.Png); } // // Save StyleSheet // if (!string.IsNullOrEmpty(newApplication.StyleSheet)) { if (!Directory.Exists(Server.MapPath(@".\styles\applications\"))) { Directory.CreateDirectory(Server.MapPath(@".\styles\applications\")); } SaveTextFile(newApplication.StyleSheet, Server.MapPath(string.Format(@".\styles\applications\{0}.css", updateKey))); } // // Save JavaScript // if (!string.IsNullOrEmpty(newApplication.JavaScript)) { SaveTextFile(newApplication.JavaScript, Server.MapPath(string.Format(@".\scripts\{0}.js", updateKey))); } UpdateQuery query = new UpdateQuery("applications"); query.AddField("application_title", newApplication.Title); query.AddField("application_description", newApplication.Description); query.AddField("application_primitive", isPrimitive); query.AddField("application_primitives", (byte)newApplication.GetAppPrimitiveSupport()); query.AddField("application_comment", newApplication.UsesComments); query.AddField("application_rating", newApplication.UsesRatings); query.AddField("application_style", !string.IsNullOrEmpty(newApplication.StyleSheet)); query.AddField("application_script", !string.IsNullOrEmpty(newApplication.JavaScript)); query.AddField("application_icon", string.Format(@"/images/{0}/icon.png", updateKey)); query.AddCondition("application_assembly_name", assemblyName); db.BeginTransaction(); db.Query(query); } else { core.Functions.Generate403(); return; } } else { applicationId = db.UpdateQuery(string.Format(@"INSERT INTO applications (application_assembly_name, user_id, application_date_ut, application_title, application_description, application_primitive, application_primitives, application_comment, application_rating) VALUES ('{0}', {1}, {2}, '{3}', '{4}', {5}, {6}, {7}, {8});", Mysql.Escape(assemblyName), core.LoggedInMemberId, tz.GetUnixTimeStamp(tz.Now), Mysql.Escape(newApplication.Title), Mysql.Escape(newApplication.Description), isPrimitive, (byte)newApplication.GetAppPrimitiveSupport(), newApplication.UsesComments, newApplication.UsesRatings)); try { ApplicationEntry profileAe = new ApplicationEntry(core, "Profile"); db.UpdateQuery(string.Format(@"INSERT INTO primitive_apps (application_id, item_id, item_type_id) VALUES ({0}, {1}, '{2}');", profileAe.ApplicationId, applicationId, ItemKey.GetTypeId(core, typeof(ApplicationEntry)))); } catch { } try { ApplicationEntry guestbookAe = new ApplicationEntry(core, "GuestBook"); db.UpdateQuery(string.Format(@"INSERT INTO primitive_apps (application_id, item_id, item_type_id) VALUES ({0}, {1}, '{2}');", guestbookAe.ApplicationId, applicationId, ItemKey.GetTypeId(core, typeof(ApplicationEntry)))); } catch { } } if (applicationId > 0) { ApplicationInstallationInfo aii = newApplication.Install(); if (aii.ApplicationSlugs != null) { foreach (ApplicationSlugInfo slug in aii.ApplicationSlugs) { if (db.UpdateQuery(string.Format(@"UPDATE application_slugs SET slug_primitives = {0}, slug_updated_ut = {1} WHERE slug_stub = '{2}' AND slug_slug_ex = '{3}' AND application_id = {4}", (byte)slug.Primitives, updatedRaw, Mysql.Escape(slug.Stub), Mysql.Escape(slug.SlugEx), applicationId)) != 1) { /*db.UpdateQuery(string.Format(@"INSERT INTO application_slugs (slug_stub, slug_slug_ex, application_id, slug_primitives, slug_updated_ut) VALUES ('{0}', '{1}', {2}, {3}, {4});", Mysql.Escape(slug.Stub), Mysql.Escape(slug.SlugEx), applicationId, (byte)slug.Primitives, updatedRaw));*/ ApplicationSlug.Create(core, applicationId, slug); } } } if (aii.ApplicationModules != null) { foreach (ApplicationModule module in aii.ApplicationModules) { if (db.UpdateQuery(string.Format(@"UPDATE account_modules SET module_updated_ut = {0} WHERE module_module = '{1}' AND application_id = {2};", updatedRaw, Mysql.Escape(module.Slug), applicationId)) != 1) { db.UpdateQuery(string.Format(@"INSERT INTO account_modules (module_module, application_id, module_updated_ut) VALUES ('{0}', {1}, {2});", Mysql.Escape(module.Slug), applicationId, updatedRaw)); } } } if (aii.ApplicationCommentTypes != null) { foreach (ApplicationCommentType ct in aii.ApplicationCommentTypes) { if (db.UpdateQuery(string.Format(@"UPDATE comment_types SET type_updated_ut = {0} WHERE type_type = '{1}' AND application_id = {2};", updatedRaw, Mysql.Escape(ct.Type), applicationId)) != 1) { db.UpdateQuery(string.Format(@"INSERT INTO comment_types (type_type, application_id, type_updated_ut) VALUES ('{0}', {1}, {2});", Mysql.Escape(ct.Type), applicationId, updatedRaw)); } } } /*if (aii.ApplicationItemAccessPermissions != null) { foreach (ApplicationItemAccessPermissions iap in aii.ApplicationItemAccessPermissions) { try { AccessControlPermission acp = new AccessControlPermission(core, iap.TypeId, iap.PermissionName); } catch (InvalidAccessControlPermissionException) { AccessControlPermission.Create(core, iap.TypeId, iap.PermissionName); } } }*/ db.UpdateQuery(string.Format(@"DELETE FROM application_slugs WHERE application_id = {0} AND slug_updated_ut <> {1};", applicationId, updatedRaw)); db.UpdateQuery(string.Format(@"DELETE FROM account_modules WHERE application_id = {0} AND module_updated_ut <> {1};", applicationId, updatedRaw)); db.UpdateQuery(string.Format(@"DELETE FROM comment_types WHERE application_id = {0} AND type_updated_ut <> {1};", applicationId, updatedRaw)); BoxSocial.Internals.Application.InstallTypes(core, loadApplication, applicationId); BoxSocial.Internals.Application.InstallTables(core, loadApplication); //List<Type> types; foreach (Type t in types) { //if (t.FindInterfaces(TypeFilter.Equals, typeof(IPermissibleItem))) List<PermissionInfo> permissions = AccessControlLists.GetPermissionInfo(t); foreach (PermissionInfo pi in permissions) { try { ItemType it = new ItemType(core, t.FullName); try { AccessControlPermission acp = new AccessControlPermission(core, it.Id, pi.Key); } catch (InvalidAccessControlPermissionException) { AccessControlPermission.Create(core, it.Id, pi.Key, pi.Description, pi.PermissionType); } } catch (InvalidItemTypeException) { } } } } else { core.Display.ShowMessage("Error", "Error installing application"); EndResponse(); } } } } core.Display.ShowMessage("Application Installed", "The application has been installed."); } } EndResponse(); }