added dynamic user preferences #7 #9 (#90)

- fixed user settings database #9
- added dynamic user preferences #9
- added form to edit user preferences #9
- removed user language #7
This commit is contained in:
Kevin Papst
2018-01-14 22:47:20 +01:00
committed by GitHub
parent 023fef6a70
commit 49d8796f6b
23 changed files with 758 additions and 181 deletions

View File

@@ -3,6 +3,8 @@
namespace App\Entity;
use App\Validator\Constraints as KimaiAssert;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
use Symfony\Component\Security\Core\User\UserInterface;
@@ -10,7 +12,7 @@ use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* User
* Application main User entity.
*
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @ORM\Table(
@@ -29,7 +31,6 @@ class User implements UserInterface, AdvancedUserInterface
{
const DEFAULT_ROLE = 'ROLE_USER';
const DEFAULT_LANGUAGE = 'de';
/**
* @var int
@@ -81,14 +82,6 @@ class User implements UserInterface, AdvancedUserInterface
*/
private $alias;
/**
* @var string
*
* @ORM\Column(name="language", type="string", length=5, nullable=true)
* @Assert\Language()
*/
private $language = self::DEFAULT_LANGUAGE;
/**
* @var boolean
*
@@ -126,12 +119,20 @@ class User implements UserInterface, AdvancedUserInterface
*/
private $roles = [];
/**
* @var UserPreference[]|Collection
*
* @ORM\OneToMany(targetEntity="App\Entity\UserPreference", mappedBy="user")
*/
private $preferences;
/**
* User constructor.
*/
public function __construct()
{
$this->registeredAt = new \DateTime();
$this->preferences = new ArrayCollection();
}
/**
@@ -151,10 +152,10 @@ class User implements UserInterface, AdvancedUserInterface
}
/**
* @param $registeredAt
* @param \DateTime $registeredAt
* @return $this
*/
public function setRegisteredAt($registeredAt)
public function setRegisteredAt(\DateTime $registeredAt)
{
$this->registeredAt = $registeredAt;
@@ -199,15 +200,6 @@ class User implements UserInterface, AdvancedUserInterface
return $this->active;
}
/**
* @deprecated
* @return boolean
*/
public function getActive()
{
return $this->isActive();
}
/**
* @param string $password
* @return $this
@@ -324,24 +316,6 @@ class User implements UserInterface, AdvancedUserInterface
return $this;
}
/**
* @return string
*/
public function getLanguage()
{
return $this->language;
}
/**
* @param string $language
* @return $this
*/
public function setLanguage($language)
{
$this->language = $language;
return $this;
}
/**
* Returns the roles or permissions granted to the user for security.
*
@@ -369,6 +343,37 @@ class User implements UserInterface, AdvancedUserInterface
return $this;
}
/**
* @return UserPreference[]|Collection
*/
public function getPreferences(): Collection
{
return $this->preferences;
}
/**
* @param UserPreference[]|Collection<UserPreference> $preferences
* @return User
*/
public function setPreferences(array $preferences)
{
if (!($preferences instanceof Collection) && is_array($preferences)) {
$preferences = new ArrayCollection($preferences);
}
$this->preferences = $preferences;
return $this;
}
/**
* @param UserPreference $preference
* @return User
*/
public function addPreference(UserPreference $preference)
{
$this->preferences->add($preference);
return $this;
}
/**
* @inheritdoc
*/