File: D:/HostingSpaces/SBogers10/komma-mediadesign.nl/wwwroot/beheer/app/models/login/m_activation.php
<?php
/*
Class for activation mail when user forgot his password.
*/
require_once DOCUMENT_ROOT.'app/models/mail/m_phpmailer.php';
require_once DOCUMENT_ROOT.'app/models/mail/m_mailMessage.php';
class Activation
{
/**
*
* @var class Database Handler object for executing basic queries
*/
private $_dbh;
/**
*
* @var array Activation data such as email, used and stored
*/
private $_data = array('email'=>'','hash'=>'','stored'=>'','used'=>'');
/**
*
* @var array Userdata used within activation class
*/
private $_userData = array();
/**
*
* @var string Activation hash which is stored in the database and is send to the user
*/
private $_acthash = '';
/**
* Constructor
*/
public function __construct($userData = NULL)
{
$this->_userData = $userData;
$this->_dbh = new DatabaseHandler();
$this->_dbh->setTableName('kms_activation');
}
/**
* Gets the hash checks if a hash exists
*
* @access
* @param
* @return
*/
public function get($hash = NULL)
{
if( ! empty($hash))
{
$this->_dbh->setData($this->_data);
$this->_data = $this->_dbh->addRule('hash', $hash);
$this->_data = $this->_dbh->select();
}
else
{
// todo get all hashes
}
return $this->_data;
}
/**
* Sends an e-mail to the user
*
* @access
* @param
* @return
*/
public function send()
{
if( ! empty($this->_userData['email']))
{
// Get/Set info
$fromName = 'Komma Mediadesign';
$from = 'no-reply@komma-mediadesign.nl';
$subject = 'Wachtwoord vergeten';
// Create Url
$this->_acthash = $this->createKey();
$url = $this->createUrl($this->_acthash);
// Message
$str = 'U heeft in het Komma Management Systeem aangegeven dat u uw wachtwoord bent vergeten.<br />';
$str .= 'Middels onderstaande link kunt opnieuw een wachtwoord kiezen.<br />';
$str .= 'Deze link is de komende 24 uur geldig, dus zorgt dat u binnen deze tijd uw wachtwoord hebt gewijzigd.<br /><br />';
$str .= '<a href="'.$url.'" target="_blank">link: '.$url.'</a><br /><br />';
$mailMsg = new MailMessage($str, $this->_userData['user']);
$msg = $mailMsg->get();
// Send
$mail = new PHPMailer(TRUE);
try
{
$mail->AddAddress($this->_userData['email'], $this->_userData['user']);
$mail->SetFrom($from, $fromName);
//$mail->AddReplyTo($from, $fromName);
$mail->Subject = $subject;
$mail->MsgHTML($msg);
$mail->Send();
}
catch (phpmailerException $e)
{
return FALSE;
}
// Update DB
if($this->store())
{
return TRUE;
}
}
return FALSE;
}
/**
* Creates a new ;
*
* @access private
* @param
* @return string
*/
private function createKey()
{
$acthash = sha1($this->_userData['email'].'flipflop'.time());
return $acthash;
}
/**
* Creates a new activationurl
*
* @access private
* @param
* @return string
*/
private function createUrl($acthash)
{
$url = SITE_ROOT.'activate/'.$acthash.'/';
return $url;
}
/**
* Stores the activationkey
*
* @access private
* @param
* @return null
*/
private function store()
{
$data = array();
$data['hash'] = $this->_acthash;
$data['email'] = $this->_userData['email'];
$data['stored'] = time();
$this->_dbh->setData($data);
if($this->_dbh->insert())
{
return TRUE;
}
return FALSE;
}
/**
* Updates activation key when used
*
* @access public
* @param string
* @return boolean
*/
public function update($acthash)
{
// value to update
$this->_dbh->setData(array('used'=>time()));
// update
if($this->_dbh->update('hash',$acthash))
{
return TRUE;
}
return FALSE;
}
}