Example #1
0
		public Return Reject(Usr TargetUsr, GroupUsr TargetGroupUsr, Usr PerformingUsr, GroupUsr PerformingGroupUsr)
		{
			Return r = new Return();

			if (this.Restriction.Equals(Group.RestrictionEnum.Custom))
			{
				r.Success=false;
				r.MessageHtml="Can't accept into a custom group!";
				return r;
			}

			if (!PerformingUsr.IsAdmin && (PerformingGroupUsr==null || !PerformingGroupUsr.IsMember))
			{
				r.Success=false;
				r.MessageHtml="You must be a member of this group to reject someone!";
				return r;
			}

			if (TargetGroupUsr==null)
			{
				r.Success=false;
				r.MessageHtml="Can't reject - user hasn't requested membership!";
				return r;
			}
			else if (TargetGroupUsr.Status.Equals(GroupUsr.StatusEnum.Request))
			{
				// This person has requested membership
				// if the current user is a moderator, we must enable the request.
				if (this.Restriction.Equals(Group.RestrictionEnum.Moderator))
				{
					if (PerformingUsr.CanGroupMemberAdmin(PerformingGroupUsr))
					{
						RejectPrivate(TargetUsr, TargetGroupUsr, PerformingUsr, PerformingGroupUsr);
						r.Success=true;
						return r;
					}
					else
					{
						r.Success=false;
						r.MessageHtml="You don't have permission to reject.";
						return r;
					}
				}
				else
				{
					RejectPrivate(TargetUsr, TargetGroupUsr, PerformingUsr, PerformingGroupUsr);
					r.Success=true;
					return r;
				}
			}
			else if (TargetGroupUsr.Status.Equals(GroupUsr.StatusEnum.Recommend))
			{
				// A previous membership request was denied
				// if the current user is a moderator, we must enable them straight away. 
				if (PerformingUsr.CanGroupMemberAdmin(PerformingGroupUsr))
				{
					RejectPrivate(TargetUsr, TargetGroupUsr, PerformingUsr, PerformingGroupUsr);
					r.Success=true;
					return r;
				}
				else
				{
					r.Success=false;
					r.MessageHtml="You don't have permission to reject.";
					return r;
				}
			}
			else
			{
				r.Success=false;
				r.MessageHtml="Can't reject - wrong status.";
				return r;
			}
		}
Example #2
0
		public Return Invite(Usr TargetUsr, GroupUsr TargetGroupUsr, Usr PerformingUsr, GroupUsr PerformingGroupUsr, 
			string InviteMessage, bool InviteByEmail)
		{
			Return r = new Return();

			string targetUsr = "";
			if (InviteByEmail && TargetUsr.NickName.Length==0)
				targetUsr = TargetUsr.Email;
			else
				targetUsr = TargetUsr.Link();

			if (this.Restriction.Equals(Group.RestrictionEnum.Custom))
			{
				r.Success=false;
				r.MessageHtml="The "+this.FriendlyName+" group is a special group - the membership "+
					"is automatically controlled. You can't invite people to this group.";
				return r;
			}

			if (!PerformingUsr.IsAdmin && (PerformingGroupUsr==null || !PerformingGroupUsr.IsMember))
			{
				r.Success=false;
				r.MessageHtml="You're not a member of the "+this.FriendlyName+" group!";
				return r;
			}

			if (TargetGroupUsr==null)
			{
				if (this.Restriction.Equals(Group.RestrictionEnum.Moderator))
				{
					//nothing now
					//if the current user is a moderator, we add an invite request. 
					//If the current user isn't a mod, we add a recommend.
					if (PerformingUsr.CanGroupMemberAdmin(PerformingGroupUsr))
					{
						InvitePrivate(TargetUsr, TargetGroupUsr, PerformingUsr, PerformingGroupUsr, InviteMessage);
						r.Success=true;
						r.MessageHtml="You have invited "+targetUsr+" to the "+
							this.FriendlyName+" group. They will be sent a message shortly.";
					}
					else
					{
						RecommendPrivate(TargetUsr, TargetGroupUsr, PerformingUsr, PerformingGroupUsr, InviteMessage);
						r.Success=true;
						r.MessageHtml="Since "+this.FriendlyName+" is a restricted group, only "+
							"moderators may send invites. "+targetUsr+" has been recommended "+
							"as a possible member. A moderator will decide whether to send the invite.";
					}
				}
				else
				{
					InvitePrivate(TargetUsr, TargetGroupUsr, PerformingUsr, PerformingGroupUsr, InviteMessage);
					r.Success=true;
					r.MessageHtml="You have invited "+targetUsr+" to the "+this.FriendlyName+" group. "+
						"They will be sent a message shortly.";
				}
			}
			else if (TargetGroupUsr.Status.Equals(GroupUsr.StatusEnum.Member))
			{
				// This person is a member of the group
				r.Success=false;
				r.MessageHtml=targetUsr+" is already a member of the "+this.FriendlyName+" group.";
			}
			else if (TargetGroupUsr.Status.Equals(GroupUsr.StatusEnum.Request))
			{
				// This person has requested membership
				// if the current user is a moderator, we must enable the request. 
				// If the current user isn't a mod, we must show an error.
				if (this.Restriction.Equals(Group.RestrictionEnum.Moderator))
				{
					if (PerformingUsr.CanGroupMemberAdmin(PerformingGroupUsr))
					{
						JoinPrivate(TargetUsr, TargetGroupUsr, PerformingUsr, PerformingGroupUsr);
						r.Success=true;
						r.MessageHtml=targetUsr+" had already requested to join the "+
							this.FriendlyName+" group, so we've instantly made them a member.";
					}
					else
					{
						r.Success=false;
						r.MessageHtml=targetUsr+" has already requested to be a member "+
							"of this group. The group moderators will deal with the request and either accept or "+
							"deny the request.";
					}
				}
				else
				{
					JoinPrivate(TargetUsr, TargetGroupUsr, PerformingUsr, PerformingGroupUsr);
					r.Success=true;
					r.MessageHtml=targetUsr+" had already requested to join the "+
						this.FriendlyName+" group, so we've instantly made them a member.";
				}
			}
			else if (TargetGroupUsr.Status.Equals(GroupUsr.StatusEnum.RequestRejected))
			{
				// A previous membership request was denied
				// if the current user is a moderator, we must enable them straight away. 
				// If the current user isn't a mod, we must show an error.
				if (PerformingUsr.CanGroupMemberAdmin(PerformingGroupUsr))
				{
					JoinPrivate(TargetUsr, TargetGroupUsr, PerformingUsr, PerformingGroupUsr);
					r.Success=true;
					r.MessageHtml=targetUsr+" had already requested to join the "+
						this.FriendlyName+", so we've instantly made them a member.";
				}
				else
				{
					r.Success=false;
					r.MessageHtml=targetUsr+" has already requested to be a member, "+
						"but their request was denied. You can't invite this person to this group. Contact "+
						"a group moderator if you think this person should be a member.";
				}
			}
			else if (TargetGroupUsr.Status.Equals(GroupUsr.StatusEnum.Invite))
			{
				// The person has been officially invited to the group - if they accept they will become a 
				// member instantly
				r.Success=false;
				r.MessageHtml=targetUsr+" has already been invited to the "+
					this.FriendlyName+" group. You can't send another invite.";
			}
			else if (TargetGroupUsr.Status.Equals(GroupUsr.StatusEnum.Exited))
			{
				// The person exited the group themselves
				r.Success=false;
				r.MessageHtml=targetUsr+" was previously a member of the "+
					this.FriendlyName+" group, but they exited it. You can't invite them back.";
			}
			else if (TargetGroupUsr.Status.Equals(GroupUsr.StatusEnum.Barred))
			{
				// The person has been barred by a moderator
				if (PerformingUsr.CanGroupMemberAdmin(PerformingGroupUsr))
				{
					r.Success = false;
					r.MessageHtml = targetUsr+" has been barred from the "+
						this.FriendlyName+" group. You must first un-bar them on the "+
						"<a href=\""+this.UrlApp("admin","mode","membership")+"\">group options page</a>.";
				}
				else
				{
					r.Success = false;
					r.MessageHtml = targetUsr+" has been barred from the "+
						this.FriendlyName+" group by a moderator. You can't send an invite.";
				}
			}
			else if (TargetGroupUsr.Status.Equals(GroupUsr.StatusEnum.Recommend))
			{
				// A member has recommended this person as a group member. The membership admins will either 
				// change the status to Invited, or change it to RecommendRejected. This status level is 
				// only used in groups with restricted membership
				if (this.Restriction.Equals(Group.RestrictionEnum.Moderator))
				{
					if (PerformingUsr.CanGroupMemberAdmin(PerformingGroupUsr))
					{
						InvitePrivate(TargetUsr, TargetGroupUsr, PerformingUsr, PerformingGroupUsr, InviteMessage);
						r.Success = true;
						r.MessageHtml = "You have invited "+targetUsr+" to the "+
							this.FriendlyName+" group. They will be sent a message shortly.";
					}
					else
					{
						r.Success = false;
						r.MessageHtml = "Since "+this.FriendlyName+" is a restricted group, only "+
							"moderators may send invites. "+targetUsr+" has been recommended as a "+
							"possible member. A moderator will decide whether to send the invite.";
					}
				}
				else
				{
					InvitePrivate(TargetUsr, TargetGroupUsr, PerformingUsr, PerformingGroupUsr, InviteMessage);
					r.Success = true;
					r.MessageHtml = "You have invited "+targetUsr+" to the "+
						this.FriendlyName+" group. They will be sent a message shortly.";
				}
			}
			else if (TargetGroupUsr.Status.Equals(GroupUsr.StatusEnum.RecommendRejected))
			{
				// A member has recommended this person as a member of the group, but they were rejected by a 
				// membership moderator. This status level is only used in groups with restricted membership
				if (PerformingUsr.CanGroupMemberAdmin(PerformingGroupUsr))
				{
					InvitePrivate(TargetUsr, TargetGroupUsr, PerformingUsr, PerformingGroupUsr, InviteMessage);
					r.Success = true;
					r.MessageHtml = "You have invited "+targetUsr+" to the "+
						this.FriendlyName+" group. They will be sent a message shortly.";
				}
				else
				{
					r.Success = false;
					r.MessageHtml = targetUsr+" has previously been rejected by a "+
						"moderator, so you can't send an invite. Contact a group moderator if you think "+
						"this person should be a member.";
				}
			}
			else if (TargetGroupUsr.Status.Equals(GroupUsr.StatusEnum.InviteRejected))
			{
				// This person was invited to the group, but decided they didn't want to be a member
				r.Success = false;
				r.MessageHtml = targetUsr+" has already been invited to the "+
					this.FriendlyName+" group, but they rejected the invitation. You can't send another invite.";
			}
			return r;
			
		}