Added basic group management, with many missing features.

This commit is contained in:
Polonkai Gergely
2012-07-16 14:16:10 +02:00
parent 038ad5d018
commit 973b331825
15 changed files with 1135 additions and 1 deletions

View File

@@ -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;
}
}

View File

@@ -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;
}
}