コード例 #1
0
        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;
            }
        }
コード例 #2
0
ファイル: Musician.cs プロジェクト: smithydll/boxsocial
        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;
        }
コード例 #3
0
ファイル: Musician.cs プロジェクト: smithydll/boxsocial
        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;
        }
コード例 #4
0
ファイル: Group.cs プロジェクト: smithydll/boxsocial
        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;
        }
コード例 #5
0
ファイル: Group.cs プロジェクト: smithydll/boxsocial
        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();
                }
            }
        }
コード例 #6
0
ファイル: Network.cs プロジェクト: smithydll/boxsocial
        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;
        }
コード例 #7
0
ファイル: SubGroup.cs プロジェクト: smithydll/boxsocial
        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;
        }
コード例 #8
0
        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!");
            }
        }
コード例 #9
0
ファイル: Group.cs プロジェクト: smithydll/boxsocial
        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;
        }
コード例 #10
0
ファイル: User.cs プロジェクト: smithydll/boxsocial
        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;
        }
コード例 #11
0
ファイル: User.cs プロジェクト: smithydll/boxsocial
        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();
                }
            }
        }
コード例 #12
0
ファイル: User.cs プロジェクト: smithydll/boxsocial
        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;
        }
コード例 #13
0
ファイル: User.cs プロジェクト: smithydll/boxsocial
        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;
            }
        }
コード例 #14
0
ファイル: SubGroup.cs プロジェクト: smithydll/boxsocial
        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;
        }
コード例 #15
0
ファイル: UserRelation.cs プロジェクト: smithydll/boxsocial
        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;
        }
コード例 #16
0
ファイル: Group.cs プロジェクト: smithydll/boxsocial
        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();
                }
            }
        }
コード例 #17
0
        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;
        }
コード例 #18
0
ファイル: Group.cs プロジェクト: smithydll/boxsocial
        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;
        }
コード例 #19
0
ファイル: Network.cs プロジェクト: smithydll/boxsocial
        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();
                }
            }
        }
コード例 #20
0
        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();
        }