Added basic group management, with many missing features.
This commit is contained in:
@@ -205,4 +205,99 @@ class Group
|
||||
{
|
||||
return $this->members;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if user is a member of this Group
|
||||
*
|
||||
* @param KekRozsak\SecurityBundle\Entity\User $user
|
||||
* @return boolean
|
||||
*/
|
||||
public function isMember(\KekRozsak\SecurityBundle\Entity\User $user)
|
||||
{
|
||||
return ($this->members->filter(
|
||||
function ($groupMembership) use ($user) {
|
||||
return (
|
||||
($groupMembership->getUser() == $user)
|
||||
&& (
|
||||
$groupMembership->getGroup()->isOpen()
|
||||
|| ($groupMembership->getMembershipAcceptedAt() !== null)
|
||||
)
|
||||
);
|
||||
}
|
||||
)->count() > 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if user already requested a membership in this Group
|
||||
*
|
||||
* @param KekRozsak\SecurityBundle\Entity\User $user
|
||||
* @return boolean
|
||||
*/
|
||||
public function isRequested(\KekRozsak\SecurityBundle\Entity\User $user)
|
||||
{
|
||||
return ($this->members->filter(
|
||||
function ($groupMembership) use ($user) {
|
||||
return (
|
||||
($groupMembership->getUser() == $user)
|
||||
&& ($groupMembership->getMembershipRequestedAt() !== null)
|
||||
);
|
||||
}
|
||||
)->count() > 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* @var string description
|
||||
* @ORM\Column(type="text", nullable=true)
|
||||
*/
|
||||
protected $description;
|
||||
|
||||
/**
|
||||
* Set description
|
||||
*
|
||||
* @param string $description
|
||||
* @return Group
|
||||
*/
|
||||
public function setDescription($description = null)
|
||||
{
|
||||
$this->description = $description;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get description
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDescription()
|
||||
{
|
||||
return $this->description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @var boolean open
|
||||
* @ORM\Column(type="boolean", nullable=false)
|
||||
*/
|
||||
protected $open;
|
||||
|
||||
/**
|
||||
* Set open
|
||||
*
|
||||
* @param boolean $open
|
||||
* @ return Group
|
||||
*/
|
||||
public function setOpen($open = false)
|
||||
{
|
||||
$this->open = $open;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get open
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function isOpen()
|
||||
{
|
||||
return $this->open;
|
||||
}
|
||||
}
|
||||
|
@@ -90,4 +90,89 @@ class UserGroupMembership
|
||||
{
|
||||
return $this->group;
|
||||
}
|
||||
|
||||
/**
|
||||
* @var DateTime $membershipRequestedAt
|
||||
* @ORM\Column(type="datetime", name="membership_requested_at")
|
||||
*/
|
||||
protected $membershipRequestedAt;
|
||||
|
||||
/**
|
||||
* Set membershipRequestedAt
|
||||
*
|
||||
* @param DateTime $membershipRequestedAt
|
||||
* @return UserGroupMembership
|
||||
*/
|
||||
public function setMembershipRequestedAt(\DateTime $membershipRequestedAt)
|
||||
{
|
||||
$this->membershipRequestedAt = $membershipRequestedAt;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get membershipRequestedAt
|
||||
*
|
||||
* @return DateTime
|
||||
*/
|
||||
public function getMembershipRequestedAt()
|
||||
{
|
||||
return $this->membershipRequestedAt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @var DateTime membershipAcceptedAt
|
||||
* @ORM\Column(type="datetime", nullable=true, name="membership_accepted_at")
|
||||
*/
|
||||
protected $membershipAcceptedAt;
|
||||
|
||||
/**
|
||||
* Set membershipAcceptedAt
|
||||
*
|
||||
* @param DateTime $membershipAcceptedAt
|
||||
* @return UserGroupMembership
|
||||
*/
|
||||
public function setMembershipAcceptedAt(\DateTime $membershipAcceptedAt = null)
|
||||
{
|
||||
$this->membershipAcceptedAt = $membershipAcceptedAt;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get membershipAcceptedAt
|
||||
*
|
||||
* @return DateTime
|
||||
*/
|
||||
public function getMembershipAcceptedAt()
|
||||
{
|
||||
return $this->membershipAcceptedAt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @var KekRozsak\SecurityBundle\Entity\User $membershipAcceptedBy
|
||||
* @ORM\ManyToOne(targetEntity="KekRozsak\SecurityBundle\Entity\User")
|
||||
* @ORM\JoinColumn(name="membership_accepted_by_id")
|
||||
*/
|
||||
protected $membershipAcceptedBy;
|
||||
|
||||
/**
|
||||
* Set membershipAcceptedBy
|
||||
*
|
||||
* @param KekRozsak\SecurityBundle\Entity\User
|
||||
* @return UserGroupMembership
|
||||
*/
|
||||
public function setMembershipAcceptedBy(\KekRozsak\SecurityBundle\Entity\User $membershipAcceptedBy = null)
|
||||
{
|
||||
$this->membershipAcceptedBy = $membershipAcceptedBy;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get membershipAcceptedBy
|
||||
*
|
||||
* @return KekRozsak\SecurityBundle\Entity\User
|
||||
*/
|
||||
public function getMembershipAcceptedBy()
|
||||
{
|
||||
return $this->membershipAcceptedBy;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user