public function save($user, array $values)
{
$this->setProperties($user, $values);
if (!$user->getUsername()) {
throw new \InvalidArgumentException('username_empty');
}
if (!$this->isUnique('username', $user->getUsername(), $user->getId())) {
throw new \InvalidArgumentException('username_conflict');
}
if (!$user->getEmail()) {
throw new \InvalidArgumentException('email_empty');
}
if (!$this->isUnique('email', $user->getEmail(), $user->getId())) {
throw new \InvalidArgumentException('email_conflict');
}
if (array_key_exists('attributes', $values)) {
$this->setAttributes($user, (array) $values['attributes']);
}
if (array_key_exists('user_type', $values)) {
$this->setUserTypes($user, (array) $values['user_type']);
}
if (array_key_exists('author', $values)) {
$author = null;
if (!empty($values['author'])) {
$author = $this->getEntityManager()->getReference('Newscoop\\Entity\\Author', $values['author']);
}
$user->setAuthor($author);
}
$this->getEntityManager()->persist($user);
}