/// -----------------------------------------------------------------------------
        /// <summary>
        /// UpdateSettings saves the modified settings to the Database
        /// </summary>
        /// <remarks>
        /// </remarks>
        /// <history>
        /// </history>
        /// -----------------------------------------------------------------------------
        public override void UpdateSettings()
        {
            try
            {
                Theme             = drpThemes.SelectedValue;
                Mode              = drpMode.SelectedValue;
                TemplateId        = Utilities.SafeConvertInt(drpTemplates.SelectedValue);
                PageSize          = Utilities.SafeConvertInt(drpPageSize.SelectedValue, 10);
                FloodInterval     = Utilities.SafeConvertInt(drpFloodInterval.SelectedValue, 0);
                EditInterval      = Utilities.SafeConvertInt(drpEditInterval.SelectedValue, 0);
                AutoLink          = Utilities.SafeConvertBool(rdAutoLinks.SelectedValue);
                DeleteBehavior    = Utilities.SafeConvertInt(drpDeleteBehavior.SelectedValue);
                AddThis           = txtAddThis.Text;
                ProfileVisibility = Utilities.SafeConvertInt(drpProfileVisibility.SelectedValue);
                Signatures        = Utilities.SafeConvertInt(drpSignatures.SelectedValue);
                UserNameDisplay   = drpUserDisplayMode.SelectedValue;
                FriendlyURLs      = Utilities.SafeConvertBool(rdEnableURLRewriter.SelectedValue);
                FullTextSearch    = Utilities.SafeConvertBool(rdFullTextSearch.SelectedValue);
                MailQueue         = Utilities.SafeConvertBool(rdMailQueue.SelectedValue);

                MessagingType = Utilities.SafeConvertInt(drpMessagingType.SelectedValue);

                EnableUsersOnline = Utilities.SafeConvertBool(rdUsersOnline.SelectedValue);
                UseSkinBreadCrumb = Utilities.SafeConvertBool(rdUseSkinBreadCrumb.SelectedValue);

                if (drpMessagingTab.SelectedItem != null)
                {
                    MessagingTabId = Utilities.SafeConvertInt(drpMessagingTab.SelectedValue);
                }

                PrefixURLBase     = txtURLPrefixBase.Text;
                PrefixURLCategory = txtURLPrefixCategory.Text;
                PrefixURLOther    = txtURLPrefixOther.Text;
                PrefixURLTag      = txtURLPrefixTags.Text;

                EnablePoints           = Utilities.SafeConvertBool(rdPoints.SelectedValue);
                AnswerPointValue       = Utilities.SafeConvertInt(txtAnswerPointValue.Text, 1);
                ReplyPointValue        = Utilities.SafeConvertInt(txtReplyPointValue.Text, 1);
                MarkAsAnswerPointValue = Utilities.SafeConvertInt(txtMarkAnswerPointValue.Text, 1);
                TopicPointValue        = Utilities.SafeConvertInt(txtTopicPointValue.Text, 1);
                ModPointValue          = Utilities.SafeConvertInt(txtModPointValue.Text, 1);

                AvatarHeight = Utilities.SafeConvertInt(txtAvatarHeight.Text, 48);
                AvatarWidth  = Utilities.SafeConvertInt(txtAvatarWidth.Text, 48);

                TimeFormatString = !string.IsNullOrWhiteSpace(txtTimeFormat.Text) ? txtTimeFormat.Text : "h:mm tt";
                DateFormatString = !string.IsNullOrWhiteSpace(txtDateFormat.Text) ? txtDateFormat.Text : "M/d/yyyy";

                ForumGroupTemplate = Utilities.SafeConvertInt(drpForumGroupTemplate.SelectedValue);
                var adminSec = txtGroupModSec.Value.Split(',');
                SaveForumSecurity("groupadmin", adminSec);
                var memSec = txtGroupMemSec.Value.Split(',');
                SaveForumSecurity("groupmember", memSec);
                var regSec = txtGroupRegSec.Value.Split(',');
                SaveForumSecurity("registereduser", regSec);
                var anonSec = txtGroupAnonSec.Value.Split(',');
                SaveForumSecurity("anon", anonSec);

                try
                {
                    if (IsFullTextAvailable && FullTextSearch && FullTextStatus != 1)                     // Available, selected and not currently installed
                    {
                        // Note: We have to jump through some hoops here to maintain Azure compatibility and prevent a race condition in the procs.

                        // Create the full text manager proc
                        var fullTextInstallScript = Utilities.GetSqlString("DotNetNuke.Modules.ActiveForums.sql.FullTextInstallPart1.sql");
                        var result = DotNetNuke.Data.DataProvider.Instance().ExecuteScript(fullTextInstallScript);

                        // Exectute the full text manager proc to setup the search indexes
                        DataProvider.Instance().Search_ManageFullText(true);

                        // Create the full text search proc (can't be reliably created until the indexes are in place)
                        fullTextInstallScript = Utilities.GetSqlString("DotNetNuke.Modules.ActiveForums.sql.FullTextInstallPart2.sql");
                        DotNetNuke.Data.DataProvider.Instance().ExecuteScript(fullTextInstallScript);
                    }
                    else if (IsFullTextAvailable && !FullTextSearch)                     // Available, but not selected
                    {
                        // Remove the search indexes if they exist
                        DataProvider.Instance().Search_ManageFullText(false);
                    }
                }
                catch (Exception ex)
                {
                    FullTextSearch = false;
                    Services.Exceptions.Exceptions.ProcessModuleLoadException(this, ex);
                }

                // Clear out the cache
                DataCache.ClearSettingsCache(ModuleId);
            }
            catch (Exception exc)             //Module failed to load
            {
                Services.Exceptions.Exceptions.ProcessModuleLoadException(this, exc);
            }
        }