HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/spire.komma-mediadesign.nl/wwwroot/kms/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();
		}
		
		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 = 'info@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;
	}
}