Newscoop\Entity\Repository\UserRepository::save PHP Метод

save() публичный Метод

Save user
public save ( User $user, array $values ) : void
$user Newscoop\Entity\User
$values array
Результат void
    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);
    }

Usage Example

Пример #1
0
 /**
  * Save staff
  *
  * @param Newscoop\Entity\User\Staff $staff
  * @param array $values
  * @return void
  */
 public function save(Staff $staff, array $values)
 {
     $em = $this->getEntityManager();
     // set groups
     $groups = $staff->getGroups();
     $groups->clear();
     if (!empty($values['groups'])) {
         foreach ($values['groups'] as $groupId) {
             $group = $em->getReference('Newscoop\\Entity\\User\\Group', (int) $groupId);
             $groups->add($group);
         }
     }
     // try if will be able to manage users
     $acl = \Zend_Registry::get('acl')->getAcl($staff);
     $auth = \Zend_Auth::getInstance();
     if ($auth->getIdentity() == $staff->getId() && !$acl->isAllowed($staff, 'user', 'manage')) {
         throw new \InvalidArgumentException("Can't prevent yourself from managing users");
     }
     // set role
     if ($staff->getId() == NULL) {
         // add
         $role = new Role();
         $em->persist($role);
         $staff->setRole($role);
     }
     parent::save($staff, $values);
 }