* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace FOS\UserBundle\Model; /** * @author Johannes M. Schmitt */ abstract class Group implements GroupInterface { protected $id; protected $name; protected $roles; public function __construct($name, $roles = array()) { $this->name = $name; $this->roles = $roles; } /** * @param string $role * * @return Group */ public function addRole($role) { if (!$this->hasRole($role)) { $this->roles[] = strtoupper($role); } return $this; } public function getId() { return $this->id; } public function getName() { return $this->name; } /** * @param string $role */ public function hasRole($role) { return in_array(strtoupper($role), $this->roles, true); } public function getRoles() { return $this->roles; } /** * @param string $role * * @return Group */ public function removeRole($role) { if (false !== $key = array_search(strtoupper($role), $this->roles, true)) { unset($this->roles[$key]); $this->roles = array_values($this->roles); } return $this; } /** * @param string $name * * @return Group */ public function setName($name) { $this->name = $name; return $this; } /** * @param array $roles * * @return Group */ public function setRoles(array $roles) { $this->roles = $roles; return $this; } }