public function indexAction()
{
$translator = Zend_Registry::get('container')->getService('translator');
$form = $this->_helper->form('profile');
$form->setMethod('POST');
$form->setDefaults((array) $this->user->getView());
$form->username->setRequired(false);
$form->removeElement('username');
$username = $this->user->getUsername();
$request = $this->getRequest();
if ($request->isPost() && $form->isValid($request->getPost())) {
$values = $form->getValues();
$values['username'] = $username;
try {
if (!empty($values['image'])) {
$imageInfo = array_pop($form->image->getFileInfo());
$values['image'] = $this->_helper->service('image')->save($imageInfo);
}
//TODO add event to subscribe for newsletter
$this->service->save($values, $this->user);
$this->_helper->flashMessenger->addMessage($translator->trans('Profile saved.', array(), 'users'));
$this->_helper->redirector('index');
} catch (\InvalidArgumentException $e) {
switch ($e->getMessage()) {
case 'username_conflict':
$form->username->addError($translator->trans("User with given username exists."));
break;
default:
$form->image->addError($e->getMessage());
break;
}
}
}
$this->view->user = new MetaUser($this->user);
$this->view->form = $form;
}