Пример #1
0
        /// <summary>
        /// Creates the YAF role.
        /// </summary>
        /// <param name="roleName">Name of the role.</param>
        /// <param name="boardId">The board id.</param>
        /// <param name="yafBoardAccessMasks">The YAF board access masks.</param>
        /// <returns>
        /// Returns the Role id of the created Role
        /// </returns>
        public static long CreateYafRole(string roleName, int boardId, List <RoleInfo> yafBoardAccessMasks)
        {
            int accessMaskId;

            try
            {
                // Give the default DNN Roles Member Access, unknown roles get "No Access Mask"
                accessMaskId = roleName.Equals("Registered Users") || roleName.Equals("Subscribers")
                               ? yafBoardAccessMasks.Find(mask => mask.RoleName.Equals("Member Access")).RoleID
                               : yafBoardAccessMasks.Find(mask => mask.RoleName.Equals("No Access Mask")).RoleID;
            }
            catch (Exception)
            {
                accessMaskId = yafBoardAccessMasks.Find(mask => mask.RoleGroupID.Equals(0)).RoleID;
            }

            var groupFlags = new GroupFlags();

            // Role exists in membership but not in yaf itself simply add it to yaf
            return(BoardContext.Current.GetRepository <Group>().Save(
                       null,
                       boardId,
                       roleName,
                       groupFlags,
                       accessMaskId,
                       0,
                       null,
                       100,
                       null,
                       0,
                       null,
                       0,
                       0));
        }
Пример #2
0
        public static GroupFlags ReadGroupFlags(this BinaryReader reader)
        {
            byte[] arrayOfBytes = new byte[4];
            reader.Read(arrayOfBytes, 0, 4);
            BitArray flags = new BitArray(arrayOfBytes);

            GroupFlags groupFlags = new GroupFlags();

            groupFlags.HasBSPtree             = flags[0];           // (MOBN and MOBR chunk).
            groupFlags.Haslightmap            = flags[1];           // (MOLM, MOLD). (UNUSED: 20740) possibly: subtract mohd.color in mocv fixing  // SubtractAmbientColour
            groupFlags.Hasvertexolors         = flags[2];           // (MOCV chunk).
            groupFlags.SMOGroupEXTERIOR       = flags[3];           // -- Outdoor - also influences how doodads are culled // is outdoors
            groupFlags.SMOGroupEXTERIOR_LIT   = flags[6];           // -- "Do not use local diffuse lightning". Applicable for both doodads from this wmo group(color from MODD) and water(CWorldView::GatherMapObjDefGroupLiquids).
            groupFlags.SMOGroupUNREACHABLE    = flags[7];
            groupFlags.Haslights              = flags[9];           // (MOLR chunk)
            groupFlags.SMOGroupLOD            = flags[10];          // Legion+? Also load for LoD != 0 (_lod* groups)
            groupFlags.Hasdoodads             = flags[11];          // (MODR chunk)
            groupFlags.SMOGroupLIQUIDSURFACE  = flags[12];          // -- Has water(MLIQ chunk)
            groupFlags.SMOGroupINTERIOR       = flags[13];          // -- Indoor
            groupFlags.SMOGroupALWAYSDRAW     = flags[16];          // -- clear 0x8 after CMapObjGroup::Create() in MOGP and MOGI // AlwaysDrawEvenIfOutdoors
            groupFlags.HasMORIandMORBchunks   = flags[17];          // Has triangle strips
            groupFlags.Showskybox             = flags[18];          // -- automatically unset if MOSB not present.
            groupFlags.is_not_water_but_ocean = flags[19];          // LiquidType related, see below in the MLIQ chunk. // is oceanic water
            groupFlags.IsMountAllowed         = flags[21];
            groupFlags.SMOGroupCVERTS2        = flags[24];          // Has two MOCV chunks: Just add two or don't set 0x4 to only use cverts2. // has two vertex shading sets
            groupFlags.SMOGroupTVERTS2        = flags[25];          // Has two MOTV chunks: Just add two. // has two texture coordinate sets
            groupFlags.SMOGroupANTIPORTAL     = flags[26];          // Just call CMapObjGroup::CreateOccluders() independent of groupname being "antiportal". requires intBatchCount == 0, extBatchCount == 0, UNREACHABLE. // create occlusion without clearing bsp
            groupFlags.unknown = flags[27];                         // requires intBatchCount == 0, extBatchCount == 0, UNREACHABLE. // occlusion related
            groupFlags.SMOGroupEXTERIOR_CULL = flags[29];
            groupFlags.SMOGroupTVERTS3       = flags[30];           // Has three MOTV chunks, eg. for MOMT with shader 18.
                                                                    // 1 unused flag follows
            return(groupFlags);
        }
Пример #3
0
        public GroupAdministrationInfo(long groupId, long accountId, long transactionId, long timestamp, GroupFlags flags = GroupFlags.None)
        {
            GroupId       = groupId;
            AccountId     = accountId;
            TransactionId = transactionId;
            Flags         = flags;

            AdministrationLastTransactionInfo = new LastTransactionInfo(transactionId, timestamp);

            _accounts[accountId] = GroupAccountFlags.Admin;
        }
Пример #4
0
 public GroupInformation(byte[] inData)
 {
     using (MemoryStream ms = new MemoryStream(inData))
     {
         using (BinaryReader br = new BinaryReader(ms))
         {
             this.Flags = (GroupFlags)br.ReadUInt32();
             this.BoundingBox = br.ReadBox();
             this.GroupNameOffset = br.ReadInt32();
         }
     }
 }
Пример #5
0
 public GroupInformation(byte[] inData)
 {
     using (MemoryStream ms = new MemoryStream(inData))
     {
         using (BinaryReader br = new BinaryReader(ms))
         {
             this.Flags           = (GroupFlags)br.ReadUInt32();
             this.BoundingBox     = br.ReadBox();
             this.GroupNameOffset = br.ReadInt32();
         }
     }
 }
Пример #6
0
        public void UpdateFlags()
        {
            if (this.LightReferences != null)
            {
                this.Flags |= GroupFlags.HasLights;
            }

            if (this.DoodadReferences != null)
            {
                this.Flags |= GroupFlags.HasDoodads;
            }

            if (this.BSPNodes != null && this.BSPFaceIndices != null)
            {
                this.Flags |= GroupFlags.HasBSP;
            }

            if (this.mpbv != null && this.mpbp != null && this.mpbi != null && this.mpbg != null)
            {
                this.Flags |= GroupFlags.UnknownLODRelated;
            }

            if (this.VertexColours != null)
            {
                this.Flags |= GroupFlags.HasVertexColours;
            }

            if (this.Liquids != null)
            {
                this.Flags |= GroupFlags.HasLiquids;
            }

            if (this.TriangleStripIndices != null && this.TriangleStrips != null)
            {
                this.Flags |= GroupFlags.HasTriangleStrips;
            }

            if (this.AdditionalTextureCoordinates != null)
            {
                this.Flags |= GroupFlags.HasTwoTextureCoordinateSets;
            }

            if (this.AdditionalVertexColours != null)
            {
                this.Flags |= GroupFlags.HasTwoVertexShadingSets;
            }

            if (this.SecondAddtionalTextureCoordinates != null)
            {
                this.Flags |= GroupFlags.HasThreeTextureCoordinateSets;
            }
        }
Пример #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="flags"></param>
        /// <returns></returns>
        private string CreateQuery(GroupFlags flags)
        {
            string query = string.Empty;

            query += $"?endpoints={flags.HasFlag(GroupFlags.ENDPOINTS).ToString().ToLower()}";
            query += $"&type={flags.HasFlag(GroupFlags.TYPE).ToString().ToLower()}";
            query += $"&config={flags.HasFlag(GroupFlags.CONFIG).ToString().ToLower()}";
            query += $"&icons={flags.HasFlag(GroupFlags.ICONS).ToString().ToLower()}";
            query += $"&info={flags.HasFlag(GroupFlags.INFO).ToString().ToLower()}";
            query += $"&full={flags.HasFlag(GroupFlags.FULL).ToString().ToLower()}";

            return(query);
        }
Пример #8
0
        /// <summary>
        /// Handles page load event.
        /// </summary>
        /// <param name="sender">
        /// The sender.
        /// </param>
        /// <param name="e">
        /// The e.
        /// </param>
        protected void Page_Load(object sender, EventArgs e)
        {
            // this needs to be done just once, not during postbacks
            if (!IsPostBack)
            {
                // create page links
                CreatePageLinks();

                // bind data
                BindData();

                // is this editing of existing role or creation of new one?
                if (Request.QueryString.GetFirstOrDefault("i") != null)
                {
                    // we are not creating new role
                    this.NewGroupRow.Visible = false;

                    // get data about edited role
                    using (DataTable dt = DB.group_list(PageContext.PageBoardID, Request.QueryString.GetFirstOrDefault("i")))
                    {
                        // get it as row
                        DataRow row = dt.Rows[0];

                        // get role flags
                        var flags = new GroupFlags(row["Flags"]);

                        // set controls to role values
                        this.Name.Text            = (string)row["Name"];
                        this.IsGuestX.Checked     = flags.IsGuest;
                        this.IsAdminX.Checked     = flags.IsAdmin;
                        this.IsStartX.Checked     = flags.IsStart;
                        this.IsModeratorX.Checked = flags.IsModerator;
                        this.PMLimit.Text         = row["PMLimit"].ToString();
                        this.StyleTextBox.Text    = row["Style"].ToString();
                        this.Priority.Text        = row["SortOrder"].ToString();
                        this.UsrAlbums.Text       = row["UsrAlbums"].ToString();
                        this.UsrAlbumImages.Text  = row["UsrAlbumImages"].ToString();
                        this.UsrSigChars.Text     = row["UsrSigChars"].ToString();
                        this.UsrSigBBCodes.Text   = row["UsrSigBBCodes"].ToString();
                        this.UsrSigHTMLTags.Text  = row["UsrSigHTMLTags"].ToString();
                        this.Description.Text     = row["Description"].ToString();

                        // IsGuest flag can be set for only one role. if it isn't for this, disable that row
                        if (flags.IsGuest)
                        {
                            this.IsGuestTR.Visible = true;
                        }
                    }
                }
            }
        }
Пример #9
0
        /// <summary>
        /// Handles provider roles adding/deleting.
        /// </summary>
        /// <param name="source">
        /// The source.
        /// </param>
        /// <param name="e">
        /// The e.
        /// </param>
        protected void RoleListNetItemCommand([NotNull] object source, [NotNull] RepeaterCommandEventArgs e)
        {
            // detect which command are we handling
            switch (e.CommandName)
            {
            case "add":

                // save role and get its ID
                const int InitialPMessages = 0;

                var groupFlags = new GroupFlags();

                var groupId = this.GetRepository <Group>().Save(
                    null,
                    this.PageContext.PageBoardID,
                    e.CommandArgument.ToString(),
                    groupFlags,
                    1,
                    InitialPMessages,
                    null,
                    100,
                    null,
                    0,
                    null,
                    null,
                    0,
                    0);

                // redirect to newly created role
                BuildLink.Redirect(ForumPages.Admin_EditGroup, "i={0}", groupId);
                break;

            case "delete":

                // delete role from provider data
                this.Get <IAspNetRolesHelper>().DeleteRole(e.CommandArgument.ToString());

                // re-bind data
                this.BindData();
                break;
            }
        }
Пример #10
0
        /// <summary>
        /// Handles page load event.
        /// </summary>
        protected void Page_Load(object sender, System.EventArgs e)
        {
            // this needs to be done just once, not during postbacks
            if (!IsPostBack)
            {
                // create page links
                CreatePageLinks();

                // bind data
                BindData();

                // is this editing of existing role or creation of new one?
                if (Request.QueryString["i"] != null)
                {
                    // we are not creating new role
                    NewGroupRow.Visible = false;

                    // get data about edited role
                    using (DataTable dt = DB.group_list(PageContext.PageBoardID, Request.QueryString["i"]))
                    {
                        // get it as row
                        DataRow row = dt.Rows[0];
                        // get role flags
                        GroupFlags flags = new GroupFlags(row["Flags"]);

                        // set controls to role values
                        Name.Text            = (string)row["Name"];
                        IsGuestX.Checked     = flags.IsGuest;
                        IsAdminX.Checked     = flags.IsAdmin;
                        IsStartX.Checked     = flags.IsStart;
                        IsModeratorX.Checked = flags.IsModerator;

                        // IsGuest flag can be set for only one role. if it isn't for this, disable that row
                        if (flags.IsGuest)
                        {
                            IsGuestTR.Visible = true;
                        }
                    }
                }
            }
        }
Пример #11
0
        public GroupAdministrationInfo(Unpacker unpacker)
        {
            unpacker.Unpack(out GroupId);
            unpacker.Unpack(out AccountId);
            unpacker.Unpack(out TransactionId);
            AdministrationLastTransactionInfo = new LastTransactionInfo(unpacker);
            Flags = (GroupFlags)unpacker.UnpackUInt();

            var count = unpacker.UnpackInt();

            for (var i = 0; i < count; i++)
            {
                var id = unpacker.UnpackLong();
                _accounts[id] = (GroupAccountFlags)unpacker.UnpackUInt();
            }

            count = unpacker.UnpackInt();
            for (var i = 0; i < count; i++)
            {
                var id = unpacker.UnpackLong();
                _pendingAccounts[id] = (GroupAccountFlags)unpacker.UnpackUInt();
            }
        }
Пример #12
0
        private static void PopulateGroupList(ListView listView, IEnumerable <UserGroup> groups)
        {
            foreach (UserGroup group in groups)
            {
                GroupFlags flags = group.Flags & ~(GroupFlags.EnabledByDefault);

                if ((flags & GroupFlags.Integrity) == GroupFlags.None)
                {
                    ListViewItem item = new ListViewItem(group.GetName());
                    item.SubItems.Add(flags.ToString());

                    if ((flags & GroupFlags.Enabled) == GroupFlags.Enabled)
                    {
                        item.BackColor = Color.LightGreen;
                    }
                    else if ((flags & GroupFlags.UseForDenyOnly) == GroupFlags.UseForDenyOnly)
                    {
                        item.BackColor = Color.LightSalmon;
                    }
                    item.Tag = group;
                    listView.Items.Add(item);
                }
            }
        }
Пример #13
0
        public void LoadBinaryData(byte[] inData)
        {
            using (MemoryStream ms = new MemoryStream(inData))
            {
                using (BinaryReader br = new BinaryReader(ms))
                {
                    this.GroupNameOffset = br.ReadUInt32();
                    this.DescriptiveGroupNameOffset = br.ReadUInt32();

                    this.Flags = (GroupFlags) br.ReadUInt32();

                    this.BoundingBox = br.ReadBox();

                    this.PortalReferenceStartingIndex = br.ReadUInt16();
                    this.PortalReferenceCount = br.ReadUInt16();

                    this.RenderBatchCountA = br.ReadUInt16();
                    this.RenderBatchCountInterior = br.ReadUInt16();
                    this.RenderBatchCountExterior = br.ReadUInt16();
                    this.Unknown = br.ReadUInt16();

                    for (int i = 0; i < 4; ++i)
                    {
                        this.FogIndices.Add(br.ReadByte());
                    }

                    this.LiquidType = br.ReadUInt32();
                    this.GroupID = new UInt32ForeignKey("WMOAreaTable", "WMOGroupID", br.ReadUInt32());

                    this.UnknownFlags = br.ReadUInt32();
                    this.Unused = br.ReadUInt32();

                    // Required subchunks
                    this.PolygonMaterials = br.ReadIFFChunk<ModelPolygonMaterials>();
                    this.VertexIndices = br.ReadIFFChunk<ModelVertexIndices>();
                    this.Vertices = br.ReadIFFChunk<ModelVertices>();
                    this.Normals = br.ReadIFFChunk<ModelNormals>();
                    this.TextureCoordinates = br.ReadIFFChunk<ModelTextureCoordinates>();
                    this.RenderBatches = br.ReadIFFChunk<ModelRenderBatches>();

                    // Optional chunks
                    if (br.PeekChunkSignature() == MOBS.Signature)
                    {
                        this.mobs = br.ReadIFFChunk<MOBS>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasLights))
                    {
                        this.LightReferences = br.ReadIFFChunk<ModelLightReferences>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasDoodads))
                    {
                        this.DoodadReferences = br.ReadIFFChunk<ModelDoodadReferences>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasBSP))
                    {
                        this.BSPNodes = br.ReadIFFChunk<ModelBSPNodes>();
                        this.BSPFaceIndices = br.ReadIFFChunk<ModelBSPFaceIndices>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.UnknownLODRelated))
                    {
                        this.mpbv = br.ReadIFFChunk<MPBV>();
                        this.mpbp = br.ReadIFFChunk<MPBP>();
                        this.mpbi = br.ReadIFFChunk<MPBI>();
                        this.mpbg = br.ReadIFFChunk<MPBG>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasVertexColours))
                    {
                        this.VertexColours = br.ReadIFFChunk<ModelVertexColours>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasLiquids))
                    {
                        this.Liquids = br.ReadIFFChunk<ModelLiquids>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasTriangleStrips))
                    {
                        this.TriangleStripIndices = br.ReadIFFChunk<ModelTriangleStripIndices>();
                        this.TriangleStrips = br.ReadIFFChunk<ModelTriangleStrips>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasTwoTextureCoordinateSets))
                    {
                        this.AdditionalTextureCoordinates = br.ReadIFFChunk<ModelTextureCoordinates>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasTwoVertexShadingSets))
                    {
                        this.AdditionalVertexColours = br.ReadIFFChunk<ModelVertexColours>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasThreeTextureCoordinateSets))
                    {
                        this.SecondAddtionalTextureCoordinates = br.ReadIFFChunk<ModelTextureCoordinates>();
                    }
                }
            }
        }
Пример #14
0
        /// <summary>
        /// Synchronizes the user roles.
        /// </summary>
        /// <param name="boardId">The board id.</param>
        /// <param name="portalId">The portal id.</param>
        /// <param name="yafUserId">The YAF user id.</param>
        /// <param name="dnnUserInfo">The DNN user info.</param>
        /// <returns>
        /// Returns if the Roles where synched or not
        /// </returns>
        public static bool SynchronizeUserRoles(int boardId, int portalId, int yafUserId, UserInfo dnnUserInfo)
        {
            // Make sure are roles exist
            ImportDNNRoles(boardId, dnnUserInfo.Roles);

            var yafUserRoles = Data.GetYafUserRoles(boardId, yafUserId);

            var yafBoardRoles = LegacyDb.group_list(boardId, DBNull.Value);

            var rolesChanged = false;

            // TODO : Move code to sql SP

            // add yaf only roles to yaf
            foreach (DataRow row in yafBoardRoles.Rows)
            {
                GroupFlags roleFlags = new GroupFlags(row["Flags"]);

                var role = new RoleInfo
                {
                    RoleName = row["Name"].ToString(),
                    RoleID   = row["GroupID"].ToType <int>()
                };

                if (roleFlags.IsGuest)
                {
                    continue;
                }

                if (roleFlags.IsStart)
                {
                    if (yafUserRoles.Any(existRole => existRole.RoleName.Equals(role.RoleName)))
                    {
                        continue;
                    }

                    UpdateUserRole(role, yafUserId, dnnUserInfo.Username, true);

                    rolesChanged = true;
                }
                else
                {
                    if (!dnnUserInfo.Roles.Any(dnnRole => dnnRole.Equals(row["Name"].ToString())))
                    {
                        continue;
                    }

                    if (yafUserRoles.Any(existRole => existRole.RoleName.Equals(role.RoleName)))
                    {
                        continue;
                    }

                    UpdateUserRole(role, yafUserId, dnnUserInfo.Username, true);

                    rolesChanged = true;
                }
            }

            var roleController = new RoleController();

            // Remove user from dnn role if no longer included
            foreach (
                RoleInfo role in
                roleController.GetPortalRoles(portalId)
                .Cast <RoleInfo>()
                .Where(
                    role =>
                    !dnnUserInfo.Roles.Any(existRole => existRole.Equals(role.RoleName)) &&
                    yafUserRoles.Any(existRole => existRole.RoleName.Equals(role.RoleName))))
            {
                UpdateUserRole(role, yafUserId, dnnUserInfo.Username, false);

                rolesChanged = true;
            }

            // empty out access table
            if (rolesChanged && YafContext.Current != null)
            {
                YafContext.Current.GetRepository <ActiveAccess>().Reset();
            }

            return(rolesChanged);
        }
Пример #15
0
        /// <summary>
        /// Deserialzes the provided binary data of the object. This is the full data block which follows the data
        /// signature and data block length.
        /// </summary>
        /// <param name="inData">The binary data containing the object.</param>
        public void LoadBinaryData(byte[] inData)
        {
            using (MemoryStream ms = new MemoryStream(inData))
            {
                using (BinaryReader br = new BinaryReader(ms))
                {
                    this.GroupNameOffset            = br.ReadUInt32();
                    this.DescriptiveGroupNameOffset = br.ReadUInt32();

                    this.Flags = (GroupFlags)br.ReadUInt32();

                    this.BoundingBox = br.ReadBox();

                    this.PortalReferenceStartingIndex = br.ReadUInt16();
                    this.PortalReferenceCount         = br.ReadUInt16();

                    this.RenderBatchCountA        = br.ReadUInt16();
                    this.RenderBatchCountInterior = br.ReadUInt16();
                    this.RenderBatchCountExterior = br.ReadUInt16();
                    this.Unknown = br.ReadUInt16();

                    for (int i = 0; i < 4; ++i)
                    {
                        this.FogIndices.Add(br.ReadByte());
                    }

                    this.LiquidType = br.ReadUInt32();
                    this.GroupID    = new UInt32ForeignKey("WMOAreaTable", "WMOGroupID", br.ReadUInt32());

                    this.UnknownFlags = br.ReadUInt32();
                    this.Unused       = br.ReadUInt32();

                    // Required subchunks
                    this.PolygonMaterials   = br.ReadIFFChunk <ModelPolygonMaterials>();
                    this.VertexIndices      = br.ReadIFFChunk <ModelVertexIndices>();
                    this.Vertices           = br.ReadIFFChunk <ModelVertices>();
                    this.Normals            = br.ReadIFFChunk <ModelNormals>();
                    this.TextureCoordinates = br.ReadIFFChunk <ModelTextureCoordinates>();
                    this.RenderBatches      = br.ReadIFFChunk <ModelRenderBatches>();

                    // Optional chunks
                    if (br.PeekChunkSignature() == MOBS.Signature)
                    {
                        this.mobs = br.ReadIFFChunk <MOBS>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasLights))
                    {
                        this.LightReferences = br.ReadIFFChunk <ModelLightReferences>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasDoodads))
                    {
                        this.DoodadReferences = br.ReadIFFChunk <ModelDoodadReferences>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasBSP))
                    {
                        this.BSPNodes       = br.ReadIFFChunk <ModelBSPNodes>();
                        this.BSPFaceIndices = br.ReadIFFChunk <ModelBSPFaceIndices>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.UnknownLODRelated))
                    {
                        this.mpbv = br.ReadIFFChunk <MPBV>();
                        this.mpbp = br.ReadIFFChunk <MPBP>();
                        this.mpbi = br.ReadIFFChunk <MPBI>();
                        this.mpbg = br.ReadIFFChunk <MPBG>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasVertexColours))
                    {
                        this.VertexColours = br.ReadIFFChunk <ModelVertexColours>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasLiquids))
                    {
                        this.Liquids = br.ReadIFFChunk <ModelLiquids>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasTriangleStrips))
                    {
                        this.TriangleStripIndices = br.ReadIFFChunk <ModelTriangleStripIndices>();
                        this.TriangleStrips       = br.ReadIFFChunk <ModelTriangleStrips>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasTwoTextureCoordinateSets))
                    {
                        this.AdditionalTextureCoordinates = br.ReadIFFChunk <ModelTextureCoordinates>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasTwoVertexShadingSets))
                    {
                        this.AdditionalVertexColours = br.ReadIFFChunk <ModelVertexColours>();
                    }

                    if (this.Flags.HasFlag(GroupFlags.HasThreeTextureCoordinateSets))
                    {
                        this.SecondAddtionalTextureCoordinates = br.ReadIFFChunk <ModelTextureCoordinates>();
                    }
                }
            }
        }
Пример #16
0
		/// <summary>
		/// Handles page load event.
		/// </summary>
		protected void Page_Load(object sender, System.EventArgs e)
		{
			// this needs to be done just once, not during postbacks
			if (!IsPostBack)
			{
				// create page links
				CreatePageLinks();

				// bind data
				BindData();

				// is this editing of existing role or creation of new one?
				if (Request.QueryString["i"] != null)
				{
					// we are not creating new role
					NewGroupRow.Visible = false;

					// get data about edited role
					using (DataTable dt = DB.group_list(PageContext.PageBoardID, Request.QueryString["i"]))
					{
						// get it as row
						DataRow row = dt.Rows[0];
						// get role flags
						GroupFlags flags = new GroupFlags(row["Flags"]);

						// set controls to role values
						Name.Text = (string)row["Name"];
						IsGuestX.Checked = flags.IsGuest;
						IsAdminX.Checked = flags.IsAdmin;
						IsStartX.Checked = flags.IsStart;
						IsModeratorX.Checked = flags.IsModerator;

						// IsGuest flag can be set for only one role. if it isn't for this, disable that row
						if (flags.IsGuest) IsGuestTR.Visible = true;
					}
				}
			}
		}
Пример #17
0
        /// <summary>
        /// Handles page load event.
        /// </summary>
        /// <param name="sender">
        /// The sender.
        /// </param>
        /// <param name="e">
        /// The e.
        /// </param>
        protected void Page_Load([NotNull] object sender, [NotNull] EventArgs e)
        {
            // this needs to be done just once, not during postbacks
            if (this.IsPostBack)
            {
                return;
            }

            // create page links
            this.CreatePageLinks();

            this.Save.Text   = this.GetText("COMMON", "SAVE");
            this.Cancel.Text = this.GetText("COMMON", "CANCEL");

            // bind data
            this.BindData();

            // is this editing of existing role or creation of new one?
            if (this.Request.QueryString.GetFirstOrDefault("i") == null)
            {
                return;
            }

            // we are not creating new role
            this.NewGroupRow.Visible = false;

            // get data about edited role
            using (
                var dt = this.GetRepository <Group>()
                         .List(
                    boardId: this.PageContext.PageBoardID,
                    groupID: this.Request.QueryString.GetFirstOrDefaultAs <int>("i")))
            {
                // get it as row
                var row = dt.Rows[0];

                // get role flags
                var flags = new GroupFlags(row["Flags"]);

                // set controls to role values
                this.Name.Text = (string)row["Name"];

                this.IsAdminX.Checked = flags.IsAdmin;
                this.IsAdminX.Enabled = !flags.IsGuest;

                this.IsStartX.Checked = flags.IsStart;
                this.IsStartX.Enabled = !flags.IsGuest;

                this.IsModeratorX.Checked = flags.IsModerator;
                this.IsModeratorX.Enabled = !flags.IsGuest;

                this.PMLimit.Text    = row["PMLimit"].ToString();
                this.PMLimit.Enabled = !flags.IsGuest;

                this.StyleTextBox.Text = row["Style"].ToString();

                this.Priority.Text = row["SortOrder"].ToString();

                this.UsrAlbums.Text    = row["UsrAlbums"].ToString();
                this.UsrAlbums.Enabled = !flags.IsGuest;

                this.UsrAlbumImages.Text    = row["UsrAlbumImages"].ToString();
                this.UsrAlbumImages.Enabled = !flags.IsGuest;

                this.UsrSigChars.Text    = row["UsrSigChars"].ToString();
                this.UsrSigChars.Enabled = !flags.IsGuest;

                this.UsrSigBBCodes.Text    = row["UsrSigBBCodes"].ToString();
                this.UsrSigBBCodes.Enabled = !flags.IsGuest;

                this.UsrSigHTMLTags.Text    = row["UsrSigHTMLTags"].ToString();
                this.UsrSigHTMLTags.Enabled = !flags.IsGuest;

                this.Description.Text = row["Description"].ToString();

                this.IsGuestX.Checked = flags.IsGuest;

                // IsGuest flag can be set for only one role. if it isn't for this, disable that row
                if (flags.IsGuest)
                {
                    this.IsGuestTR.Visible  = true;
                    this.IsGuestX.Enabled   = !flags.IsGuest;
                    this.AccessList.Visible = false;
                }
            }
        }
Пример #18
0
        /// <summary>
        /// Synchronizes the user roles.
        /// </summary>
        /// <param name="boardId">The board id.</param>
        /// <param name="portalId">The portal id.</param>
        /// <param name="yafUserId">The YAF user id.</param>
        /// <param name="dnnUserInfo">The DNN user info.</param>
        /// <returns>
        /// Returns if the Roles where synched or not
        /// </returns>
        public static bool SynchronizeUserRoles([NotNull] int boardId, [NotNull] int portalId, [NotNull] int yafUserId, [NotNull] UserInfo dnnUserInfo)
        {
            // Make sure are roles exist
            ImportDnnRoles(boardId, dnnUserInfo.Roles);

            var yafUserRoles = DataController.GetYafUserRoles(yafUserId);

            var yafBoardRoles = BoardContext.Current.GetRepository <Group>().List(boardId: boardId);

            var rolesChanged = false;

            // add yaf only roles to yaf
            foreach (var boardRole in yafBoardRoles)
            {
                var roleFlags = new GroupFlags(boardRole.Flags);

                var role = new RoleInfo
                {
                    RoleName = boardRole.Name,
                    RoleID   = boardRole.ID
                };

                if (roleFlags.IsGuest)
                {
                    continue;
                }

                if (roleFlags.IsStart)
                {
                    if (yafUserRoles.Any(existRole => existRole.RoleName.Equals(role.RoleName)))
                    {
                        continue;
                    }

                    UpdateUserRole(role, yafUserId, true);

                    rolesChanged = true;
                }
                else
                {
                    // ADD dnn super user manually to the administrator role
                    if (role.RoleName.Equals("Administrators") && dnnUserInfo.IsSuperUser)
                    {
                        if (!yafUserRoles.Any(existRole => existRole.RoleName.Equals(role.RoleName)))
                        {
                            UpdateUserRole(role, yafUserId, true);
                        }
                    }

                    if (!dnnUserInfo.Roles.Any(dnnRole => dnnRole.Equals(boardRole.Name)))
                    {
                        continue;
                    }

                    if (yafUserRoles.Any(existRole => existRole.RoleName.Equals(role.RoleName)))
                    {
                        continue;
                    }

                    UpdateUserRole(role, yafUserId, true);

                    rolesChanged = true;
                }
            }

            var roleController = new RoleController();

            // Remove user from dnn role if no longer included
            foreach (
                var role in
                roleController.GetRoles(portalId)
                .Where(
                    role =>
                    !dnnUserInfo.Roles.Any(existRole => existRole.Equals(role.RoleName)) &&
                    yafUserRoles.Any(existRole => existRole.RoleName.Equals(role.RoleName))))
            {
                UpdateUserRole(role, yafUserId, false);

                rolesChanged = true;
            }

            // empty out access table
            if (!rolesChanged || BoardContext.Current == null)
            {
                return(rolesChanged);
            }

            BoardContext.Current.GetRepository <ActiveAccess>().DeleteAll();
            BoardContext.Current.GetRepository <Active>().DeleteAll();

            return(true);
        }
Пример #19
0
		public static bool Has(this GroupFlags mask, GroupFlags toCheck)
		{
			return (mask & toCheck) != 0;
		}
Пример #20
0
        public void UpdateFlags()
        {
            if (this.LightReferences != null)
            {
                this.Flags |= GroupFlags.HasLights;
            }

            if (this.DoodadReferences != null)
            {
                this.Flags |= GroupFlags.HasDoodads;
            }

            if (this.BSPNodes != null && this.BSPFaceIndices != null)
            {
                this.Flags |= GroupFlags.HasBSP;
            }

            if (this.mpbv != null && this.mpbp != null && this.mpbi != null && this.mpbg != null)
            {
                this.Flags |= GroupFlags.UnknownLODRelated;
            }

            if (this.VertexColours != null)
            {
                this.Flags |= GroupFlags.HasVertexColours;
            }

            if (this.Liquids != null)
            {
                this.Flags |= GroupFlags.HasLiquids;
            }

            if (this.TriangleStripIndices != null && this.TriangleStrips != null)
            {
                this.Flags |= GroupFlags.HasTriangleStrips;
            }

            if (this.AdditionalTextureCoordinates != null)
            {
                this.Flags |= GroupFlags.HasTwoTextureCoordinateSets;
            }

            if (this.AdditionalVertexColours != null)
            {
                this.Flags |= GroupFlags.HasTwoVertexShadingSets;
            }

            if (this.SecondAddtionalTextureCoordinates != null)
            {
                this.Flags |= GroupFlags.HasThreeTextureCoordinateSets;
            }
        }
Пример #21
0
 public GroupRegistrationRequest(Unpacker unpacker, ushort size) : base(unpacker, size, GroupAdministration.FeatureId, GroupRegistrationRequestId)
 {
     GroupFlags = (GroupFlags)unpacker.UnpackUInt();
 }
Пример #22
0
        /// <summary>
        /// Save or Add new Group
        /// </summary>
        /// <param name="repository">
        /// The repository.
        /// </param>
        /// <param name="groupId">
        /// The group Id.
        /// </param>
        /// <param name="boardId">
        /// The board Id.
        /// </param>
        /// <param name="name">
        /// The name.
        /// </param>
        /// <param name="flags">
        /// The flags.
        /// </param>
        /// <param name="accessMaskId">
        /// The access mask id.
        /// </param>
        /// <param name="messagesLimit">
        /// The messages Limit.
        /// </param>
        /// <param name="style">
        /// The style.
        /// </param>
        /// <param name="sortOrder">
        /// The sort order.
        /// </param>
        /// <param name="description">
        /// The description.
        /// </param>
        /// <param name="signatureChars">
        /// Defines number of allowed characters in user signature.
        /// </param>
        /// <param name="signatureBBCodes">
        /// The signature BBCodes.
        /// </param>
        /// <param name="signatureHTMLTags">
        /// The signature HTML Tags.
        /// </param>
        /// <param name="userAlbums">
        /// Defines allowed number of albums.
        /// </param>
        /// <param name="userAlbumImages">
        /// Defines number of images allowed for an album.
        /// </param>
        /// <returns>
        /// Returns the group Id
        /// </returns>
        public static int Save(
            this IRepository <Group> repository,
            [CanBeNull] int?groupId,
            [NotNull] int boardId,
            [NotNull] string name,
            [NotNull] GroupFlags flags,
            [NotNull] int accessMaskId,
            [NotNull] int messagesLimit,
            [CanBeNull] string style,
            [NotNull] short sortOrder,
            [CanBeNull] string description,
            [NotNull] int signatureChars,
            [CanBeNull] string signatureBBCodes,
            [CanBeNull] string signatureHTMLTags,
            [CanBeNull] int userAlbums,
            [CanBeNull] int userAlbumImages)
        {
            CodeContracts.VerifyNotNull(repository);

            if (groupId.HasValue)
            {
                repository.UpdateOnly(
                    () => new Group
                {
                    Name           = name,
                    Flags          = flags.BitValue,
                    PMLimit        = messagesLimit,
                    Style          = style,
                    SortOrder      = sortOrder,
                    Description    = description,
                    UsrSigChars    = signatureChars,
                    UsrSigBBCodes  = signatureBBCodes,
                    UsrSigHTMLTags = signatureHTMLTags,
                    UsrAlbums      = userAlbums,
                    UsrAlbumImages = userAlbumImages
                },
                    g => g.ID == groupId.Value);

                repository.FireUpdated(groupId);
            }
            else
            {
                groupId = repository.Insert(
                    new Group
                {
                    Name           = name,
                    BoardID        = boardId,
                    Flags          = flags.BitValue,
                    PMLimit        = messagesLimit,
                    Style          = style,
                    SortOrder      = sortOrder,
                    Description    = description,
                    UsrSigChars    = signatureChars,
                    UsrSigBBCodes  = signatureBBCodes,
                    UsrSigHTMLTags = signatureHTMLTags,
                    UsrAlbums      = userAlbums,
                    UsrAlbumImages = userAlbumImages
                });

                repository.FireNew(groupId);

                BoardContext.Current.GetRepository <ForumAccess>().InitialAssignGroup(groupId.Value, accessMaskId);
            }

            if (style.IsSet())
            {
                // -- group styles override rank styles
                BoardContext.Current.Get <IRaiseEvent>().Raise(new UpdateUserStylesEvent(boardId));
            }

            return(groupId.Value);
        }
Пример #23
0
        /// <summary>
        /// Synchronizes the user roles.
        /// </summary>
        /// <param name="boardId">The board id.</param>
        /// <param name="portalId">The portal id.</param>
        /// <param name="yafUserId">The YAF user id.</param>
        /// <param name="dnnUserInfo">The DNN user info.</param>
        /// <returns>
        /// Returns if the Roles where synched or not
        /// </returns>
        public static bool SynchronizeUserRoles(int boardId, int portalId, int yafUserId, UserInfo dnnUserInfo)
        {
            // Make sure are roles exist
            ImportDNNRoles(boardId, dnnUserInfo.Roles);

            var yafUserRoles = Data.GetYafUserRoles(boardId, yafUserId);

            var yafBoardRoles = YafContext.Current.GetRepository <Group>().ListTyped(boardId: boardId);

            var rolesChanged = false;

            // TODO : Move code to sql SP

            // add yaf only roles to yaf
            foreach (var boardRole in yafBoardRoles)
            {
                var roleFlags = new GroupFlags(boardRole.Flags);

                var role = new RoleInfo
                {
                    RoleName = boardRole.Name,
                    RoleID   = boardRole.ID
                };

                if (roleFlags.IsGuest)
                {
                    continue;
                }

                if (roleFlags.IsStart)
                {
                    if (yafUserRoles.Any(existRole => existRole.RoleName.Equals(role.RoleName)))
                    {
                        continue;
                    }

                    UpdateUserRole(role, yafUserId, dnnUserInfo.Username, true);

                    rolesChanged = true;
                }
                else
                {
                    if (!dnnUserInfo.Roles.Any(dnnRole => dnnRole.Equals(boardRole.Name)))
                    {
                        continue;
                    }

                    if (yafUserRoles.Any(existRole => existRole.RoleName.Equals(role.RoleName)))
                    {
                        continue;
                    }

                    UpdateUserRole(role, yafUserId, dnnUserInfo.Username, true);

                    rolesChanged = true;
                }
            }

            var roleController = new RoleController();

            // Remove user from dnn role if no longer included
            foreach (
                RoleInfo role in
                roleController.GetPortalRoles(portalId)
                .Cast <RoleInfo>()
                .Where(
                    role =>
                    !dnnUserInfo.Roles.Any(existRole => existRole.Equals(role.RoleName)) &&
                    yafUserRoles.Any(existRole => existRole.RoleName.Equals(role.RoleName))))
            {
                UpdateUserRole(role, yafUserId, dnnUserInfo.Username, false);

                rolesChanged = true;
            }

            // empty out access table
            if (rolesChanged && YafContext.Current != null)
            {
                YafContext.Current.GetRepository <ActiveAccess>().DeleteAll();
                YafContext.Current.GetRepository <Active>().DeleteAll();
            }

            return(rolesChanged);
        }
Пример #24
0
 public GroupRegistrationRequest(GroupFlags groupFlags) : base(GroupAdministration.FeatureId, GroupRegistrationRequestId)
 {
     GroupFlags = groupFlags;
 }
Пример #25
0
        /// <summary>
        /// Saves the click.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void SaveClick([NotNull] object sender, [NotNull] EventArgs e)
        {
            if (!ValidationHelper.IsValidInt(this.PMLimit.Text.Trim()))
            {
                this.PageContext.AddLoadMessage(
                    this.GetText("ADMIN_EDITGROUP", "MSG_VALID_NUMBER"),
                    MessageTypes.warning);
                return;
            }

            if (!ValidationHelper.IsValidInt(this.Priority.Text.Trim()))
            {
                this.PageContext.AddLoadMessage(this.GetText("ADMIN_EDITGROUP", "MSG_INTEGER"), MessageTypes.warning);
                return;
            }

            if (!ValidationHelper.IsValidInt(this.UsrAlbums.Text.Trim()))
            {
                this.PageContext.AddLoadMessage(
                    this.GetText("ADMIN_EDITGROUP", "MSG_ALBUM_NUMBER"),
                    MessageTypes.warning);
                return;
            }

            if (!ValidationHelper.IsValidInt(this.UsrSigChars.Text.Trim()))
            {
                this.PageContext.AddLoadMessage(
                    this.GetText("ADMIN_EDITGROUP", "MSG_SIG_NUMBER"),
                    MessageTypes.warning);
                return;
            }

            if (!ValidationHelper.IsValidInt(this.UsrAlbumImages.Text.Trim()))
            {
                this.PageContext.AddLoadMessage(
                    this.GetText("ADMIN_EDITGROUP", "MSG_TOTAL_NUMBER"),
                    MessageTypes.warning);
                return;
            }

            // Role
            int?roleId = null;

            // get role ID from page's parameter
            if (this.Get <HttpRequestBase>().QueryString.Exists("i"))
            {
                roleId = this.Get <HttpRequestBase>().QueryString.GetFirstOrDefaultAs <int>("i");
            }

            // get new and old name
            var roleName    = this.Name.Text.Trim();
            var oldRoleName = string.Empty;

            // if we are editing existing role, get it's original name
            if (roleId.HasValue)
            {
                // get the current role name in the DB
                var groups = this.GetRepository <Group>().List(boardId: this.PageContext.PageBoardID);

                groups.ForEach(group => oldRoleName = group.Name);
            }

            var groupFlags = new GroupFlags
            {
                IsGuest     = this.IsGuestX.Checked,
                IsAdmin     = this.IsAdminX.Checked,
                IsModerator = this.IsModeratorX.Checked,
                IsStart     = this.IsStartX.Checked
            };

            // save role and get its ID if it's new (if it's old role, we get it anyway)
            roleId = this.GetRepository <Group>().Save(
                roleId,
                this.PageContext.PageBoardID,
                roleName,
                groupFlags,
                this.AccessMaskID.SelectedValue.ToType <int>(),
                this.PMLimit.Text.Trim().ToType <int>(),
                this.StyleTextBox.Text.Trim(),
                this.Priority.Text.Trim().ToType <short>(),
                this.Description.Text,
                this.UsrSigChars.Text.ToType <int>(),
                this.UsrSigBBCodes.Text,
                this.UsrSigHTMLTags.Text,
                this.UsrAlbums.Text.Trim().ToType <int>(),
                this.UsrAlbumImages.Text.Trim().ToType <int>());

            // see if need to rename an existing role...
            if (oldRoleName.IsSet() && roleName != oldRoleName && this.Get <IAspNetRolesHelper>().RoleExists(oldRoleName) &&
                !this.Get <IAspNetRolesHelper>().RoleExists(roleName) && !this.IsGuestX.Checked)
            {
                // transfer users in addition to changing the name of the role...
                var users = this.Get <IAspNetRolesHelper>().GetUsersInRole(oldRoleName);

                // delete the old role...
                this.Get <IAspNetRolesHelper>().DeleteRole(oldRoleName);

                // create new role...
                this.Get <IAspNetRolesHelper>().CreateRole(roleName);

                if (users.Any())
                {
                    // put users into new role...
                    users.ForEach(user => this.Get <IAspNetRolesHelper>().AddUserToRole(user, roleName));
                }
            }
            else if (!this.Get <IAspNetRolesHelper>().RoleExists(roleName) && !this.IsGuestX.Checked)
            {
                // if role doesn't exist in provider's data source, create it

                // simply create it
                this.Get <IAspNetRolesHelper>().CreateRole(roleName);
            }

            // Access masks for a newly created or an existing role
            if (this.Get <HttpRequestBase>().QueryString.Exists("i"))
            {
                // go through all forums
                for (var i = 0; i < this.AccessList.Items.Count; i++)
                {
                    // get current repeater item
                    var item = this.AccessList.Items[i];

                    // get forum ID
                    var forumId = int.Parse(item.FindControlAs <HiddenField>("ForumID").Value);

                    // save forum access masks for this role
                    this.GetRepository <ForumAccess>().Save(
                        forumId,
                        roleId.ToType <int>(),
                        item.FindControlAs <DropDownList>("AccessmaskID").SelectedValue.ToType <int>());
                }

                this.Get <LinkBuilder>().Redirect(ForumPages.Admin_Groups);
            }

            // Done, redirect to role editing page
            this.Get <LinkBuilder>().Redirect(ForumPages.Admin_EditGroup, "i={0}", roleId);
        }
Пример #26
0
        public void groupApplyModifiers()
        {
            RuntimeData rd = RuntimeData.get();

            Model model = m_model;

            if (null == model)
            {
                return;
            }
            GeometryModifiersData mods = rd.m_modifiers.findGeomModifier(model.name, m_dir);

            if (null == mods)
            {
                return;
            }

            if (mods.LodNear != 0.0f)
            {
                lod_near = mods.LodNear;
            }
            if (mods.LodFar != 0.0f)
            {
                lod_far = mods.LodFar;
            }
            if (mods.LodNearFade != 0.0f)
            {
                lod_near_fade = mods.LodNearFade;
            }
            if (mods.LodFarFade != 0.0f)
            {
                lod_far_fade = mods.LodFarFade;
            }
            if (mods.LodScale != 0.0f)
            {
                lod_scale = mods.LodScale;
            }

            GroupFlags v1 = (GroupFlags)mods.GroupFlags;

            shadow_dist    = mods.ShadowDist;
            parent_fade    = v1.HasFlag(GroupFlags.ParentFade);
            region_marker  = v1.HasFlag(GroupFlags.RegionMarker);
            volume_trigger = v1.HasFlag(GroupFlags.VolumeTrigger);
            water_volume   = v1.HasFlag(GroupFlags.WaterVolume);
            lava_volume    = v1.HasFlag(GroupFlags.LavaVolume);
            sewer_volume   = v1.HasFlag(GroupFlags.SewerWaterVolume);
            door_volume    = v1.HasFlag(GroupFlags.DoorVolume);
            key_light      = v1.HasFlag(GroupFlags.KeyLight);
            tray           = v1.HasFlag(GroupFlags.VisTray) | v1.HasFlag(GroupFlags.VisOutside);

            if (mods.LodNear != 0.0f || mods.LodFar != 0.0f || mods.LodNearFade != 0.0f || mods.LodFarFade != 0.0f ||
                mods.LodScale != 0.0f)
            {
                lod_fromtrick = true;
            }

            /*
             * if (mods.node._TrickFlags.HasFlag(TrickFlags.NoColl))
             *  ; //TODO: disable collisions for this node
             * if (mods.node._TrickFlags.HasFlag(TrickFlags.SelectOnly))
             *  ; // set the model's triangles as only selectable ?? ( selection mesh ? )
             * if (mods.node._TrickFlags.HasFlag(TrickFlags.NotSelectable))
             *  ; //
             */
        }