public function editAction() { $sessionUser = $this->authorize('admin.user'); $serviceManager = $this->getServiceLocator(); $userManager = $serviceManager->get('User\\Manager\\UserManager'); $formElementManager = $serviceManager->get('FormElementManager'); $uid = $this->params()->fromRoute('uid'); $search = $this->params()->fromQuery('search'); if ($uid) { $user = $userManager->get($uid); } else { $user = null; } $editUserForm = $formElementManager->get('Backend\\Form\\User\\EditForm'); if ($this->getRequest()->isPost()) { $editUserForm->setData($this->params()->fromPost()); if ($editUserForm->isValid()) { $eud = $editUserForm->getData(); if (!$user) { $user = new User(); } if ($user->get('status') == 'admin') { if (!$sessionUser->can('admin')) { $this->flashMessenger()->addInfoMessage('Admin users can only be edited by admins'); return $this->redirect()->toRoute('backend/user/edit', ['uid' => $uid]); } } /* Account data */ $user->set('alias', $eud['euf-alias']); $status = $eud['euf-status']; if ($status == 'admin') { if ($sessionUser->can('admin')) { $user->set('status', $status); } else { $this->flashMessenger()->addInfoMessage('Admin status can only be given by admins'); if (!$user->get('uid')) { return $this->redirect()->toRoute('backend/user/edit', ['uid' => $uid]); } } } else { $user->set('status', $status); } if ($eud['euf-privileges']) { if ($sessionUser->can('admin')) { foreach (User::$privileges as $privilege => $privilegeLabel) { if (in_array($privilege, $eud['euf-privileges'])) { $user->setMeta('allow.' . $privilege, 'true'); } else { $user->setMeta('allow.' . $privilege, null); } } } else { $this->flashMessenger()->addInfoMessage('Privileges can only be edited by admins'); } } $user->set('email', $eud['euf-email']); $pw = $eud['euf-pw']; if ($pw) { $bcrypt = new Bcrypt(); $bcrypt->setCost(6); $user->set('pw', $bcrypt->create($pw)); } /* Personal data */ $user->setMeta('gender', $eud['euf-gender']); switch ($eud['euf-gender']) { case 'family': case 'firm': $user->setMeta('name', $eud['euf-firstname']); break; default: $user->setMeta('firstname', $eud['euf-firstname']); $user->setMeta('lastname', $eud['euf-lastname']); } $user->setMeta('street', $eud['euf-street']); $user->setMeta('zip', $eud['euf-zip']); $user->setMeta('city', $eud['euf-city']); $user->setMeta('phone', $eud['euf-phone']); $user->setMeta('birthdate', $eud['euf-birthdate']); $user->setMeta('notes', $eud['euf-notes']); $userManager->save($user); $this->flashMessenger()->addSuccessMessage('User has been saved'); if ($search) { return $this->redirect()->toRoute('backend/user', [], ['query' => ['usf-search' => $search]]); } else { return $this->redirect()->toRoute('frontend'); } } } else { if ($user) { $privileges = array(); foreach (User::$privileges as $privilege => $privilegeLabel) { if ($user->getMeta('allow.' . $privilege) == 'true') { $privileges[] = $privilege; } } $editUserForm->setData(array('euf-uid' => $user->need('uid'), 'euf-alias' => $user->need('alias'), 'euf-status' => $user->need('status'), 'euf-privileges' => $privileges, 'euf-email' => $user->get('email'), 'euf-gender' => $user->getMeta('gender'), 'euf-firstname' => $user->getMeta('firstname', $user->getMeta('name')), 'euf-lastname' => $user->getMeta('lastname'), 'euf-street' => $user->getMeta('street'), 'euf-zip' => $user->getMeta('zip'), 'euf-city' => $user->getMeta('city'), 'euf-phone' => $user->getMeta('phone'), 'euf-birthdate' => $user->getMeta('birthdate'), 'euf-notes' => $user->getMeta('notes'))); } } return array('editUserForm' => $editUserForm, 'user' => $user, 'search' => $search); }
/** * @depends testAbstractEntityConstructor * @expectedException \InvalidArgumentException */ public function testAbstractEntitySetMetaFailure(User $user) { $user->setMeta(['one', 'two'], 'three'); }