Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Person\Model;
- use Core\Model\CommonEntity;
- use Doctrine\Common\Collections\ArrayCollection;
- use Doctrine\ORM\Mapping as ORM;
- use Nette\Security\IIdentity;
- use Nette\Security\Passwords;
- use Nette\Utils\Validators;
- /**
- * Class Person
- *
- * @ORM\Entity
- * @ORM\Table(name="pe_person")
- *
- * @author Petr Blazicek 2018
- */
- class Person extends CommonEntity implements IIdentity
- {
- const SEX_MALE = 1;
- const SEX_FEMALE = 2;
- const HASH_LENGTH = 40;
- /**
- * @ORM\Column(type="string", length=32, nullable=false)
- *
- * @var string
- */
- private $name;
- /**
- * @ORM\Column(type="string", length=32, nullable=false)
- *
- * @var string
- */
- private $surname;
- /**
- * @ORM\Column(type="smallint", nullable=true)
- *
- * @var int
- */
- private $gender;
- /**
- * @ORM\Column(type="string", length=64, unique=true, nullable=false)
- *
- * @var string
- */
- private $email;
- /**
- * @ORM\Column(type="string", length=40, nullable=false)
- *
- * @var string
- */
- private $password;
- /**
- * @Column(type="string", length=128, nullable=true)
- * @var string
- */
- private $roles;
- /**
- * Groups membership
- *
- * @ORM\ManyToMany(targetEntity="Group", inversedBy="members")
- * @ORM\JoinTable(name="pe_members_groups")
- *
- * @var Group|ArrayCollection
- */
- private $groups;
- /**
- * Person constructor
- */
- public function __construct()
- {
- $this->groups = new ArrayCollection();
- }
- // <editor-fold defaultstate="collapsed" desc="getters & setters">
- /**
- * Name getter
- *
- * @return string
- */
- public function getName()
- {
- return $this->name;
- }
- /**
- * Name setter
- *
- * @param string $name
- * @return self (fluent interface)
- */
- public function setName( $name )
- {
- Validators::assert( $name, 'string:2..32', 'name' );
- $this->name = $name;
- return $this;
- }
- /**
- * Surname getter
- *
- * @return string
- */
- public function getSurname()
- {
- return $this->surname;
- }
- /**
- * Surname setter
- *
- * @param string $surname
- * @return self (fluent interface)
- */
- public function setSurname( $surname )
- {
- Validators::assert( $surname, 'string:2..32', 'surname' );
- $this->surname = $surname;
- return $this;
- }
- /**
- * Gender getter
- *
- * @return int
- */
- public function getGender()
- {
- return $this->gender;
- }
- /**
- * Gender setter
- *
- * @param int $gender
- * @return self (fluent interface)
- */
- public function setGender( $gender )
- {
- Validators::assert( $gender, 'int:1..2', 'gender' );
- $this->gender = $gender;
- return $this;
- }
- /**
- * Email getter
- *
- * @return string
- */
- public function getEmail()
- {
- return $this->email;
- }
- /**
- * Email setter
- *
- * @param string $email
- * @return self (fluent interface)
- */
- public function setEmail( $email )
- {
- Validators::assert( $email, 'email', 'email' );
- $this->email = $email;
- return $this;
- }
- /**
- * Password getter
- *
- * @return string
- */
- public function getPassword()
- {
- return $this->password;
- }
- /**
- * Password setter
- *
- * @param string $password
- * @return self (fluent interface)
- */
- public function setPassword( $password )
- {
- Validators::assert( $password, 'string:6..12', 'password' );
- $this->password = Passwords::hash( $password );
- return $this;
- }
- /**
- * Roles getter
- *
- * @return string
- */
- public function getRoles()
- {
- return $this->roles;
- }
- /**
- * Roles setter
- *
- * @param string $roles
- * @return self (fluent interface)
- */
- public function setRoles( $roles )
- {
- Validators::assert( $roles, 'string', 'roles' );
- $this->roles = $roles;
- return $this;
- }
- /**
- * Groups getter
- *
- * @param bool $idList
- * @return Group[]|int[]
- */
- public function getGroups( $idList = FALSE )
- {
- return $idList ? $this->groups->getKeys() : $this->groups->toArray();
- }
- /**
- * Group adder
- *
- * @param Group $group
- * @return self (fluent interface)
- */
- public function addGroup( Group $group )
- {
- if ( !$this->groups->elementExists( $group ) ) {
- $this->groups->add( $group );
- $group->addMember( $this );
- }
- return $this;
- }
- /**
- * Group remover
- *
- * @param mixed $group
- * @return self (fluent interface)
- */
- public function removeGroup( $group )
- {
- if ( $group instanceof Group ) $this->groups->removeElement( $group );
- else $this->groups->remove( $group );
- $group->removeMember( $this );
- return $this;
- }
- /**
- * Entity data getter
- *
- * @return []
- */
- public function provide()
- {
- return parent::provide() + [
- 'name' => $this->getName(),
- 'surname' => $this->getSurname(),
- 'gender' => $this->getGender(),
- 'email' => $this->getEmail(),
- 'roles' => $this->getRoles(),
- 'groups' => $this->getGroups(TRUE),
- ];
- }
- /**
- * Entity data setter
- *
- * @param ArrayHash|array $data
- * @return self (fluent interface)
- */
- public function load( $data )
- {
- parent::load( $data );
- if ( isset( $data[ 'name' ] ) ) $this->setName( $data[ 'name' ] );
- if ( isset( $data[ 'surname' ] ) ) $this->setSurname( $data[ 'surname' ] );
- if ( isset( $data[ 'gender' ] ) ) $this->setGender( $data[ 'gender' ] );
- if ( isset( $data[ 'email' ] ) ) $this->setEmail( $data[ 'email' ] );
- if ( isset( $data[ 'password' ] ) ) $this->setPassword( $data[ 'password' ] );
- if ( isset( $data[ 'roles' ] ) ) $this->setRoles( $data[ 'roles' ] );
- return $this;
- }
- // </editor-fold>
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement