Archived
1
0
Fork 0
This repository has been archived on 2026-05-10. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
fiktivkod/application/modules/default/controllers/ProfileController.php
2014-12-28 18:48:32 +01:00

140 lines
No EOL
3.8 KiB
PHP

<?php
class ProfileController extends Fiktiv_Controller_Action
{
public function preDispatch()
{
if (!Zend_Auth::getInstance()->hasIdentity()) {
$this->_redirect('/');
}
}
public function indexAction()
{
$form = $this->view->form = new Zend_Form();
$form->addElement('text', 'email', array(
'label' => 'u:email',
'validators' => array(new Zend_Validate_EmailAddress())
));
$form->addElement('text', 'firstName', array(
'label' => 'u:firstname',
'validators' => array(new Zend_Validate_Alpha())
));
$form->addElement('text', 'lastName', array(
'label' => 'u:lastname',
'validators' => array(new Zend_Validate_Alpha())
));
$options = array(
1 => 'Ingen avatar',
2 => 'Egen avatar',
3 => 'Gravatar'
);
$form->addElement('select', 'avatar', array(
'label' => 'u:avatar type',
'validators' => array(new Zend_Validate_InArray($options)),
'multiOptions' => $options
));
$form->addElement('file', 'avatarImage', array(
'label' => 'Upload avatar'
));
$form->addElement('password', 'password', array(
'label' => 'u:password',
'validators' => array(new Zend_Validate_Alnum())
));
$form->addElement('password', 'passwordConfirm', array(
'label' => 'u:confirm password',
'validators' => array(new Zend_Validate_Alnum())
));
$form->addElement('Submit', 'save', array(
'label' => 'u:save'
));
$form->addDisplayGroup(
array(
'email',
'firstName',
'lastName'
),
'partOne',
array(
'legend' => 'u:user information'
)
);
$form->addDisplayGroup(
array(
'avatar',
'avatarImage',
),
'partTwo',
array(
'legend' => 'u:avatar'
)
);
$form->addDisplayGroup(
array(
'password',
'passwordConfirm',
'save'
),
'partThree',
array(
'legend' => 'u:change password'
)
);
$auth = Zend_Auth::getInstance();
$user = $auth->getIdentity();
if ($this->_request->isPost()) {
$users = new ModelUser();
$userRow = $users->find($user->id)->current();
$data = $this->_request->getPost();
if ($data['password'] !== $data['passwordConfirm'] || empty($data['password'])) {
if (!empty($data['password'])) {
$this->view->messages = 'passwords dont match';
}
} else {
if ($users->setPassword($user->id, $data['password'])) {
$this->view->messages = 'Lösenordet är ändrat!';
}
unset($data['password']);
}
unset($data['password']);
unset($data['passwordConfirm']);
unset($data['save']);
$userRow->setFromArray($data);
$userRow->save();
// Update auth session
$user = (object) array_merge((array)$user, $userRow->toArray());
unset($user->salt);
unset($user->password);
$auth->getStorage()->write($user);
}
$form->populate((array)$user);
}
}