status = self::STUDENT; $this->salt = sha1(uniqid(null, true)); $this->active = true; $this->registrationDate = new \DateTime(); $this->authSource = 'platform'; $this->courses = new ArrayCollection(); //$this->items = new ArrayCollection(); $this->classes = new ArrayCollection(); $this->curriculumItems = new ArrayCollection(); $this->portals = new ArrayCollection(); $this->dropBoxSentFiles = new ArrayCollection(); $this->dropBoxReceivedFiles = new ArrayCollection(); //$this->extraFields = new ArrayCollection(); //$this->userId = 0; //$this->createdAt = new \DateTime(); //$this->updatedAt = new \DateTime(); $this->enabled = false; $this->locked = false; $this->expired = false; $this->roles = []; $this->credentialsExpired = false; } /** * @return string */ public function __toString() { return $this->getUsername(); } /** * Updates the id with the user_id. * * @ORM\PostPersist() * * @param LifecycleEventArgs $args */ public function postPersist(LifecycleEventArgs $args) { $user = $args->getEntity(); $this->setUserId($user->getId()); } /** * @param int $userId */ public function setId($userId) { $this->id = $userId; } /** * @param int $userId */ public function setUserId($userId) { if (!empty($userId)) { $this->userId = $userId; } } /** * @return int */ public function getId() { return $this->id; } /** * @return ArrayCollection */ public function getDropBoxSentFiles() { return $this->dropBoxSentFiles; } /** * @return ArrayCollection */ public function getDropBoxReceivedFiles() { return $this->dropBoxReceivedFiles; } /** * @param ArrayCollection $value */ public function setDropBoxSentFiles($value) { $this->dropBoxSentFiles = $value; } /** * @param ArrayCollection $value */ public function setDropBoxReceivedFiles($value) { $this->dropBoxReceivedFiles = $value; } /** * @param ArrayCollection $courses */ public function setCourses($courses) { $this->courses = $courses; } /** * @return ArrayCollection */ public function getCourses() { return $this->courses; } /** * @return array */ public static function getPasswordConstraints() { return [ new Assert\Length(['min' => 5]), // Alpha numeric + "_" or "-" new Assert\Regex( [ 'pattern' => '/^[a-z\-_0-9]+$/i', 'htmlPattern' => '/^[a-z\-_0-9]+$/i', ] ), // Min 3 letters - not needed /*new Assert\Regex(array( 'pattern' => '/[a-z]{3}/i', 'htmlPattern' => '/[a-z]{3}/i') ),*/ // Min 2 numbers new Assert\Regex( [ 'pattern' => '/[0-9]{2}/', 'htmlPattern' => '/[0-9]{2}/', ] ), ] ; } /** * @param ClassMetadata $metadata */ public static function loadValidatorMetadata(ClassMetadata $metadata) { //$metadata->addPropertyConstraint('firstname', new Assert\NotBlank()); //$metadata->addPropertyConstraint('lastname', new Assert\NotBlank()); //$metadata->addPropertyConstraint('email', new Assert\Email()); /* $metadata->addPropertyConstraint('password', new Assert\Collection(self::getPasswordConstraints()) );*/ /*$metadata->addConstraint(new UniqueEntity(array( 'fields' => 'username', 'message' => 'This value is already used.', )));*/ /*$metadata->addPropertyConstraint( 'username', new Assert\Length(array( 'min' => 2, 'max' => 50, 'minMessage' => 'This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.', 'maxMessage' => 'This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.', )) );*/ } /** * @return ArrayCollection */ public function getPortals() { return $this->portals; } /** * @param $portal */ public function setPortal($portal) { $this->portals->add($portal); } /** * @param $value */ public function setPortals($value) { $this->portals = $value; } /** * @return ArrayCollection */ public function getCurriculumItems() { return $this->curriculumItems; } /** * @param $items * * @return $this */ public function setCurriculumItems($items) { $this->curriculumItems = $items; return $this; } /** * @return bool */ public function getIsActive() { return $this->active == 1; } /** * @return bool */ public function isActive() { return $this->getIsActive(); } /** * {@inheritdoc} */ public function isEnabled() { return $this->getActive() == 1; } /** * @return ArrayCollection */ /*public function getRolesObj() { return $this->roles; }*/ /** * Set salt. * * @param string $salt * * @return User */ public function setSalt($salt) { $this->salt = $salt; return $this; } /** * Get salt. * * @return string */ public function getSalt() { return $this->salt; } /** * @param ArrayCollection $classes * * @return $this */ public function setClasses($classes) { $this->classes = $classes; return $this; } /** * @return ArrayCollection */ public function getClasses() { return $this->classes; } public function getLps() { //return $this->lps; /*$criteria = Criteria::create() ->where(Criteria::expr()->eq("id", "666")) //->orderBy(array("username" => "ASC")) //->setFirstResult(0) //->setMaxResults(20) ; $lps = $this->lps->matching($criteria);*/ /*return $this->lps->filter( function($entry) use ($idsToFilter) { return $entry->getId() == 1; });*/ } /** * Returns the list of classes for the user. * * @return string */ public function getCompleteNameWithClasses() { $classSubscription = $this->getClasses(); $classList = []; /** @var UsergroupRelUser $subscription */ foreach ($classSubscription as $subscription) { $class = $subscription->getUsergroup(); $classList[] = $class->getName(); } $classString = !empty($classList) ? ' ['.implode(', ', $classList).']' : null; return \UserManager::formatUserFullName($this).$classString; } /** * Get userId. * * @return int */ public function getUserId() { return $this->userId; } /** * Set lastname. * * @param string $lastname * * @return User */ public function setLastname($lastname) { $this->lastname = $lastname; return $this; } /** * Set firstname. * * @param string $firstname * * @return User */ public function setFirstname($firstname) { $this->firstname = $firstname; return $this; } /** * Set password. * * @param string $password * * @return User */ public function setPassword($password) { $this->password = $password; return $this; } /** * Get password. * * @return string */ public function getPassword() { return $this->password; } /** * Set authSource. * * @param string $authSource * * @return User */ public function setAuthSource($authSource) { $this->authSource = $authSource; return $this; } /** * Get authSource. * * @return string */ public function getAuthSource() { return $this->authSource; } /** * Set email. * * @param string $email * * @return User */ public function setEmail($email) { $this->email = $email; return $this; } /** * Get email. * * @return string */ public function getEmail() { return $this->email; } /** * Set status. * * @param int $status * * @return User */ public function setStatus($status) { $this->status = $status; return $this; } /** * Get status. * * @return int */ public function getStatus() { return $this->status; } /** * Set officialCode. * * @param string $officialCode * * @return User */ public function setOfficialCode($officialCode) { $this->officialCode = $officialCode; return $this; } /** * Get officialCode. * * @return string */ public function getOfficialCode() { return $this->officialCode; } /** * Set phone. * * @param string $phone * * @return User */ public function setPhone($phone) { $this->phone = $phone; return $this; } /** * Get phone. * * @return string */ public function getPhone() { return $this->phone; } /** * Set address. * * @param string $address * * @return User */ public function setAddress($address) { $this->address = $address; return $this; } /** * Get address. * * @return string */ public function getAddress() { return $this->address; } /** * Set pictureUri. * * @param string $pictureUri * * @return User */ public function setPictureUri($pictureUri) { $this->pictureUri = $pictureUri; return $this; } /** * Get pictureUri. * * @return Media */ public function getPictureUri() { return $this->pictureUri; } /** * Set creatorId. * * @param int $creatorId * * @return User */ public function setCreatorId($creatorId) { $this->creatorId = $creatorId; return $this; } /** * Get creatorId. * * @return int */ public function getCreatorId() { return $this->creatorId; } /** * Set competences. * * @param string $competences * * @return User */ public function setCompetences($competences) { $this->competences = $competences; return $this; } /** * Get competences. * * @return string */ public function getCompetences() { return $this->competences; } /** * Set diplomas. * * @param string $diplomas * * @return User */ public function setDiplomas($diplomas) { $this->diplomas = $diplomas; return $this; } /** * Get diplomas. * * @return string */ public function getDiplomas() { return $this->diplomas; } /** * Set openarea. * * @param string $openarea * * @return User */ public function setOpenarea($openarea) { $this->openarea = $openarea; return $this; } /** * Get openarea. * * @return string */ public function getOpenarea() { return $this->openarea; } /** * Set teach. * * @param string $teach * * @return User */ public function setTeach($teach) { $this->teach = $teach; return $this; } /** * Get teach. * * @return string */ public function getTeach() { return $this->teach; } /** * Set productions. * * @param string $productions * * @return User */ public function setProductions($productions) { $this->productions = $productions; return $this; } /** * Get productions. * * @return string */ public function getProductions() { return $this->productions; } /** * Set language. * * @param string $language * * @return User */ public function setLanguage($language) { $this->language = $language; return $this; } /** * Get language. * * @return string */ public function getLanguage() { return $this->language; } /** * Set registrationDate. * * @param \DateTime $registrationDate * * @return User */ public function setRegistrationDate($registrationDate) { $this->registrationDate = $registrationDate; return $this; } /** * Get registrationDate. * * @return \DateTime */ public function getRegistrationDate() { return $this->registrationDate; } /** * Set expirationDate. * * @param \DateTime $expirationDate * * @return User */ public function setExpirationDate($expirationDate) { $this->expirationDate = $expirationDate; return $this; } /** * Get expirationDate. * * @return \DateTime */ public function getExpirationDate() { return $this->expirationDate; } /** * Set active. * * @param bool $active * * @return User */ public function setActive($active) { $this->active = $active; return $this; } /** * Get active. * * @return bool */ public function getActive() { return $this->active; } /** * Set openid. * * @param string $openid * * @return User */ public function setOpenid($openid) { $this->openid = $openid; return $this; } /** * Get openid. * * @return string */ public function getOpenid() { return $this->openid; } /** * Set theme. * * @param string $theme * * @return User */ public function setTheme($theme) { $this->theme = $theme; return $this; } /** * Get theme. * * @return string */ public function getTheme() { return $this->theme; } /** * Set hrDeptId. * * @param int $hrDeptId * * @return User */ public function setHrDeptId($hrDeptId) { $this->hrDeptId = $hrDeptId; return $this; } /** * Get hrDeptId. * * @return int */ public function getHrDeptId() { return $this->hrDeptId; } /** * @return Media */ public function getAvatar() { return $this->getPictureUri(); } /** * @param int $size * * @return string */ public function getAvatarOrAnonymous($size = 22) { $avatar = $this->getAvatar(); if (empty($avatar)) { return "img/icons/$size/unknown.png"; } return $avatar; } /** * @return \DateTime */ public function getMemberSince() { return $this->registrationDate; } /** * @return bool */ public function isOnline() { return false; } /** * @return int */ public function getIdentifier() { return $this->getId(); } /** * If manually uploading a file (i.e. not using Symfony Form) ensure an instance * of 'UploadedFile' is injected into this setter to trigger the update. If this * bundle's configuration parameter 'inject_on_load' is set to 'true' this setter * must be able to accept an instance of 'File' as the bundle will inject one here * during Doctrine hydration. * * @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $image */ public function setImageFile(File $image) { $this->imageFile = $image; if ($image) { // It is required that at least one field changes if you are using doctrine // otherwise the event listeners won't be called and the file is lost $this->updatedAt = new \DateTime('now'); } } /** * @return File */ public function getImageFile() { return $this->imageFile; } /** * @return string */ public function getSlug() { return $this->getUsername(); } /** * @param $slug * * @return User */ public function setSlug($slug) { return $this->setUsername($slug); } /** * Set lastLogin. * * @param \DateTime $lastLogin * * @return User */ public function setLastLogin(\DateTime $lastLogin = null) { $this->lastLogin = $lastLogin; return $this; } /** * Get lastLogin. * * @return \DateTime */ public function getLastLogin() { return $this->lastLogin; } /** * Get sessionCourseSubscription. * * @return ArrayCollection */ public function getSessionCourseSubscriptions() { return $this->sessionCourseSubscriptions; } /** * @param $value * * @return $this */ public function setSessionCourseSubscriptions($value) { $this->sessionCourseSubscriptions = $value; return $this; } /** * @return string */ public function getConfirmationToken() { return $this->confirmationToken; } /** * @param string $confirmationToken * * @return User */ public function setConfirmationToken($confirmationToken) { $this->confirmationToken = $confirmationToken; return $this; } /** * @return \DateTime */ public function getPasswordRequestedAt() { return $this->passwordRequestedAt; } /** * @param int $ttl * * @return bool */ /*public function isPasswordRequestNonExpired($ttl) { return $this->getPasswordRequestedAt() instanceof \DateTime && $this->getPasswordRequestedAt()->getTimestamp() + $ttl > time(); }*/ /** * @return string */ public function getUsername(): string { return (string) $this->username; } /** * Returns the expiration date. * * @return \DateTime|null */ public function getExpiresAt() { return $this->expiresAt; } /** * Returns the credentials expiration date. * * @return \DateTime */ public function getCredentialsExpireAt() { return $this->credentialsExpireAt; } /** * Sets the credentials expiration date. * * @param \DateTime|null $date * * @return User */ public function setCredentialsExpireAt(\DateTime $date = null) { $this->credentialsExpireAt = $date; return $this; } /** * Sets the user groups. * * @param array $groups * * @return User */ public function setGroups($groups) { foreach ($groups as $group) { $this->addGroup($group); } return $this; } /** * @return string */ public function getFullname() { return sprintf('%s %s', $this->getFirstname(), $this->getLastname()); } /** * Returns the user roles. * * @return array The roles */ public function getRoles() { $roles = $this->roles; foreach ($this->getGroups() as $group) { $roles = array_merge($roles, $group->getRoles()); } // we need to make sure to have at least one role $roles[] = static::ROLE_DEFAULT; return array_unique($roles); } public function isAccountNonExpired() { /*if (true === $this->expired) { return false; } if (null !== $this->expiresAt && $this->expiresAt->getTimestamp() < time()) { return false; }*/ return true; } public function isAccountNonLocked() { return true; //return !$this->locked; } public function isCredentialsNonExpired() { /*if (true === $this->credentialsExpired) { return false; } if (null !== $this->credentialsExpireAt && $this->credentialsExpireAt->getTimestamp() < time()) { return false; }*/ return true; } /** * @return bool */ public function getCredentialsExpired() { return $this->credentialsExpired; } /** * @param bool $boolean * * @return User */ public function setCredentialsExpired($boolean) { $this->credentialsExpired = $boolean; return $this; } /** * @param $boolean * * @return $this|BaseUser */ public function setEnabled($boolean) { $this->enabled = (bool) $boolean; return $this; } /** * @return bool */ public function getExpired() { return $this->expired; } /** * Sets this user to expired. * * @param bool $boolean * * @return User */ public function setExpired($boolean) { $this->expired = (bool) $boolean; return $this; } /** * @param \DateTime $date * * @return User */ public function setExpiresAt(\DateTime $date) { $this->expiresAt = $date; return $this; } /** * @return bool */ public function getLocked(): bool { return $this->locked; } /** * @param $boolean * * @return $this */ public function setLocked($boolean) { $this->locked = $boolean; return $this; } /** * @param array $roles * * @return $this */ public function setRoles(array $roles) { $this->roles = []; foreach ($roles as $role) { $this->addRole($role); } return $this; } /** * Get achievedSkills. * * @return ArrayCollection */ public function getAchievedSkills() { return $this->achievedSkills; } /** * @param $value * * @return $this */ public function setAchievedSkills($value) { $this->achievedSkills = $value; return $this; } /** * Check if the user has the skill. * * @param Skill $skill The skill * * @return bool */ public function hasSkill(Skill $skill) { $achievedSkills = $this->getAchievedSkills(); foreach ($achievedSkills as $userSkill) { if ($userSkill->getSkill()->getId() !== $skill->getId()) { continue; } return true; } } /** * @return bool */ public function isProfileCompleted() { return $this->profileCompleted; } /** * @param mixed $profileCompleted * * @return User */ public function setProfileCompleted($profileCompleted) { $this->profileCompleted = $profileCompleted; return $this; } /** * Sets the AccessUrl for the current user in memory. * * @param AccessUrl $url * * @return $this */ public function setCurrentUrl(AccessUrl $url) { $urlList = $this->getPortals(); /** @var AccessUrlRelUser $item */ foreach ($urlList as $item) { if ($item->getUrl()->getId() === $url->getId()) { $this->currentUrl = $url; break; } } return $this; } /** * @return AccessUrl */ public function getCurrentUrl() { return $this->currentUrl; } /** * Get sessionAsGeneralCoach. * * @return ArrayCollection */ public function getSessionAsGeneralCoach() { return $this->sessionAsGeneralCoach; } /** * Get sessionAsGeneralCoach. * * @param ArrayCollection $value * * @return $this */ public function setSessionAsGeneralCoach($value) { $this->sessionAsGeneralCoach = $value; return $this; } /** * @return mixed */ public function getCommentedUserSkills() { return $this->commentedUserSkills; } /** * @param mixed $commentedUserSkills * * @return User */ public function setCommentedUserSkills($commentedUserSkills) { $this->commentedUserSkills = $commentedUserSkills; return $this; } /** * @param UserInterface $user * * @return bool */ public function isEqualTo(UserInterface $user) { if ($this->password !== $user->getPassword()) { return false; } if ($this->salt !== $user->getSalt()) { return false; } if ($this->username !== $user->getUsername()) { return false; } return true; } /** * @return string */ public function getPictureLegacy(): string { $id = $this->id; return 'users/'.substr((string) $id, 0, 1).'/'.$id.'/'.'small_'.$this->getPictureUri(); } /** * Get sentMessages. * * @return ArrayCollection */ public function getSentMessages() { return $this->sentMessages; } /** * Get receivedMessages. * * @return ArrayCollection */ public function getReceivedMessages() { return $this->receivedMessages; } }