Did some work on the User classes
This commit is contained in:
parent
9d0377c6c1
commit
ee3e264c9e
5 changed files with 134 additions and 14 deletions
|
|
@ -8,14 +8,21 @@ class Mapper_User extends Fiktiv_Model_Mapper_DbTableAbstract
|
|||
|
||||
$user = new User();
|
||||
|
||||
// What happens?
|
||||
if ($object instanceof stdClass)
|
||||
$object = (array) $object;
|
||||
|
||||
|
||||
if ($object instanceof Zend_Db_Table_Row) {
|
||||
|
||||
$user->setId($object->id);
|
||||
$user->setEmail($object->email);
|
||||
$user->setFirstName($object->firstName);
|
||||
$user->setLastName($object->lastName);
|
||||
|
||||
} else if (is_array($object)) {
|
||||
|
||||
$user->setId($object['id']);
|
||||
$user->setEmail($object['email']);
|
||||
$user->setFirstName($object['firstName']);
|
||||
$user->setLastName($object['lastName']);
|
||||
|
|
@ -85,13 +92,13 @@ class Mapper_User extends Fiktiv_Model_Mapper_DbTableAbstract
|
|||
|
||||
// Authenticate
|
||||
$result = $auth->authenticate($authAdapter);
|
||||
|
||||
|
||||
// Check result
|
||||
if ($result->isValid()) {
|
||||
// Keep all but password and salt in session.
|
||||
$storage = $auth->getStorage();
|
||||
$storage->write($authAdapter->getResultRowObject(null, array('password', 'salt')));
|
||||
|
||||
$storage->write($this->_createUser($authAdapter->getResultRowObject(null, array('password', 'salt'))));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -102,8 +109,15 @@ class Mapper_User extends Fiktiv_Model_Mapper_DbTableAbstract
|
|||
/**
|
||||
* Change password
|
||||
*/
|
||||
public function changePassword($userId, $password)
|
||||
public function setPassword($userId, $password)
|
||||
{
|
||||
|
||||
if ($userId instanceof User)
|
||||
$userId = $userId->getId();
|
||||
|
||||
if (!is_numeric($userId))
|
||||
return false;
|
||||
|
||||
return $this->_dbTable->update(
|
||||
array(
|
||||
'password' => hash('sha256',$password)
|
||||
|
|
@ -111,4 +125,20 @@ class Mapper_User extends Fiktiv_Model_Mapper_DbTableAbstract
|
|||
$this->_dbTable->getAdapter()->quoteInto('id = ?',$userId)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Save User object
|
||||
*/
|
||||
public function save(User $user)
|
||||
{
|
||||
$data = $user->toArray();
|
||||
unset($data['id']);
|
||||
|
||||
return $this->_dbTable->update(
|
||||
$data,
|
||||
$this->_dbTable->getAdapter()->quoteInto('id = ?',$user->getId())
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -12,6 +12,50 @@ class User extends Fiktiv_Model_Abstract
|
|||
protected $_regDate;
|
||||
protected $_isDeleted = false;
|
||||
|
||||
|
||||
public function __construct($data = array())
|
||||
{
|
||||
$data = (array)$data;
|
||||
|
||||
$this->setAttribs($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Quick way to set user data
|
||||
* @param array $data
|
||||
*/
|
||||
public function setAttribs(array $data)
|
||||
{
|
||||
foreach ($data as $key => $value) {
|
||||
|
||||
switch(strtolower($key)) {
|
||||
case 'email':
|
||||
$this->setEmail($value);
|
||||
break;
|
||||
case 'firstname':
|
||||
$this->setFirstName($value);
|
||||
break;
|
||||
case 'lastname':
|
||||
$this->setLastName($value);
|
||||
break;
|
||||
case 'regdate':
|
||||
$this->setRegDate(new Zend_Date($value));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getId()
|
||||
{
|
||||
return $this->_id;
|
||||
}
|
||||
|
||||
public function setId($id)
|
||||
{
|
||||
if (is_numeric($id))
|
||||
$this->_id = $id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set user email
|
||||
*
|
||||
|
|
@ -87,6 +131,14 @@ class User extends Fiktiv_Model_Abstract
|
|||
return true;
|
||||
}
|
||||
|
||||
public function setPassword($password)
|
||||
{
|
||||
if (!is_string($password))
|
||||
throw new Fiktiv_Exception('password must be string');
|
||||
|
||||
Fiktiv_Data_Service::getInstance()->User->setPassword($this, $password);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the user registration date
|
||||
*
|
||||
|
|
@ -113,7 +165,7 @@ class User extends Fiktiv_Model_Abstract
|
|||
*/
|
||||
public function __toString()
|
||||
{
|
||||
return '(' . __CLASS__ . '){' . $this->_email . ' ' . $this->_firstName . ' ' . $this->_lastName . '}';
|
||||
return '(' . __CLASS__ . '){' . $this->_email . ', ' . $this->_firstName . ' ' . $this->_lastName . '}';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -130,4 +182,29 @@ class User extends Fiktiv_Model_Abstract
|
|||
'regDate' => $this->_regDate
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load user data from database (restore last saved)
|
||||
*/
|
||||
public function reload()
|
||||
{
|
||||
$userData = Fiktiv_Data_Service::getInstance()->User->findById($this->getId());
|
||||
|
||||
if ($userData instanceof User) {
|
||||
|
||||
$this->setAttribs($userData->toArray());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save User
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
return Fiktiv_Data_Service::getInstance()->User->save($this);
|
||||
}
|
||||
}
|
||||
|
|
@ -24,8 +24,8 @@ class IndexController extends Fiktiv_Controller_Action
|
|||
//$dbLayer = Fiktiv_Db_Service::getInstance();
|
||||
//$me = $dbLayer->users->findByEmail('fredric@fiktivkod.org');
|
||||
|
||||
$dbLayer = $this->_helper->dataService();
|
||||
$me = $dbLayer->User->findByEmail('fredric@fiktivkod.org');
|
||||
$dataLayer = $this->_helper->dataService();
|
||||
$me = $dataLayer->User->findByEmail('fredric@fiktivkod.org');
|
||||
echo $me;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,11 +67,14 @@ class ProfileController extends Fiktiv_Controller_Action
|
|||
);
|
||||
|
||||
|
||||
$user = Zend_Auth::getInstance()->getIdentity();
|
||||
|
||||
|
||||
if ($this->_request->isPost()) {
|
||||
|
||||
$data = $this->_request->getPost();
|
||||
|
||||
if ($data['password'] !== $data['passwordConfirm']) {
|
||||
if ($data['password'] !== $data['passwordConfirm'] || empty($data['password'])) {
|
||||
|
||||
if (!empty($data['password']))
|
||||
$this->view->messages = 'passwords dont match';
|
||||
|
|
@ -79,7 +82,7 @@ class ProfileController extends Fiktiv_Controller_Action
|
|||
|
||||
} else {
|
||||
|
||||
if ($this->dataService->User->changePassword(Zend_Auth::getInstance()->getIdentity()->id, $data['password']))
|
||||
if ($user->setPassword($data['password']))
|
||||
$this->view->messages = 'Lösenordet är ändrat!';
|
||||
|
||||
unset($data['password']);
|
||||
|
|
@ -87,13 +90,12 @@ class ProfileController extends Fiktiv_Controller_Action
|
|||
unset($data['passwordConfirm']);
|
||||
unset($data['save']);
|
||||
|
||||
$this->dataService->User->update($data, 'id = '.Zend_Auth::getInstance()->getIdentity()->id);
|
||||
|
||||
|
||||
$user->setAttribs($data);
|
||||
$user->save();
|
||||
|
||||
}
|
||||
|
||||
|
||||
$user = $this->dataService->User->findById(Zend_Auth::getInstance()->getIdentity()->id);
|
||||
$form->populate($user->toArray());
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,4 +43,15 @@ function get_gravatar( $email, $s = 80, $d = '404', $r = 'g', $img = false, $att
|
|||
<td>abc</td>
|
||||
<td>bbb</td>
|
||||
</tr>
|
||||
</table>
|
||||
</table>
|
||||
|
||||
|
||||
<?php
|
||||
|
||||
$obj = Fiktiv_Message::factory('Queue');
|
||||
|
||||
Zend_Debug::dump($obj,'Messagehandler');
|
||||
|
||||
Zend_Debug::dump(Zend_Auth::getInstance()->getIdentity(), 'SESSION');
|
||||
|
||||
?>
|
||||
Reference in a new issue