Files
2025-03-12 17:06:23 +01:00

288 lines
8.0 KiB
PHP

<?php
/**
* SOTESHOP/stRegister
*
* Ten plik należy do aplikacji stRegister opartej na licencji (Open License SOTE) Otwarta Licencja SOTE.
* Nie zmieniaj tego pliku, jeśli chcesz korzystać z automatycznych aktualizacji oprogramowania.
* Jeśli chcesz wprowadzać swoje modyfikacje do programu, zapoznaj się z dokumentacją, jak zmieniać
* oprogramowanie bez zmiany kodu bazowego http://www.sote.pl/modifications
*
* @package stRegister
* @subpackage actions
* @copyright SOTE (www.sote.pl)
* @license http://www.sote.pl/license/open (Open License SOTE) Otwarta Licencja SOTE
* @version $Id: components.class.php 251 2009-03-30 11:35:06Z marek $
*/
class stRemindPasswordComponents extends sfComponents
{
public function executeRemind()
{
}
public function executeCreateNewPassword()
{
$this->passwordChange = 0;
$hashCode = $this->getRequestParameter('hash_code');
if($hashCode)
{
$c = new Criteria();
$c->add(sfGuardUserPeer::HASH_CODE, $hashCode);
$user = sfGuardUserPeer::doSelectOne($c);
if($user)
{
$this->login = $user->getUsername();
$this->hashCode = $hashCode;
if ($this->getRequest()->getMethod() == sfRequest::POST)
{
$user->setPassword($this->getRequestParameter('remind[password1]'));
$user->save();
$this->passwordChange = 1;
//return $this->forward('stUser', 'confirmSendPassword');
}
}
else
{
return $this->redirect('/');
}
}else{
return $this->redirect('/');
}
}
/**
* Uchwyt do walidatora edycji hasła.
*/
public function validateCreateNewPassword()
{
$error_exists = false;
if ($this->getRequest()->getMethod() == sfRequest::POST)
{
$i18n = $this->getContext()->getI18N();
$validator = new stCaptchaGDValidator();
$validator->initialize($this->getContext(), array('captcha_error' => 'Wprowadzono zły numer.'));
$captcha = $this->getRequestParameter('captcha');
if (!$validator->execute($captcha, $error))
{
$this->getRequest()->setError('captcha', $error);
$error_exists = true;
}
}
return !$error_exists;
}
/**
* Uchwyt do walidatora edycji hasła.
*/
public function handleErrorCreateNewPassword()
{
$hashCode = $this->getRequestParameter('hash_code');
$c = new Criteria();
$c->add(sfGuardUserPeer::HASH_CODE, $hashCode);
$user = sfGuardUserPeer::doSelectOne($c);
$this->login = $user->getUsername();
$this->hashCode = $hashCode;
$this->passwordChange = 0;
return sfView::SUCCESS;
}
public function executeRemindPassword()
{
$this->send_true = 0;
if ($this->getRequest()->getMethod() == sfRequest::POST)
{
$c = new Criteria();
$c->add(sfGuardUserPeer::USERNAME , $this->getRequestParameter('remind[email]'));
$user = sfGuardUserPeer::doSelectOne($c);
if($user)
{
$c = new Criteria();
$c->add(sfGuardGroupPeer::NAME , 'admin');
$idUserGroupAdmin = sfGuardGroupPeer::doSelectOne($c);
$c = new Criteria();
$c->add(sfGuardUserGroupPeer::USER_ID , $user->getId());
$c->add(sfGuardUserGroupPeer::GROUP_ID , $idUserGroupAdmin->getId());
$userGroup = sfGuardUserGroupPeer::doSelectOne($c);
if($userGroup)
{
if($user->getHashCode()=="")
{
$user->setHashCode(md5(microtime()));
$user->save();
}
try {
$this->sendLinkToChangePasswordMail($this->getRequestParameter('remind[email]'), $user->getHashCode());
} catch (Exception $e)
{
//@todo: add to log.
}
$this->send_true = 1;
}
else
{
$this->send_true = 0;
}
}
else
{
$this->send_true = 0;
}
}
}
/**
* Obsługuje wysyłanie mail'i
*/
function sendLinkToChangePasswordMail($user, $hashCode)
{
$mail_error = $this->mailWithLinkToChangePassword($user, $hashCode);
return $mail_error;
}
/**
* Wysyła mail z zamówieniem do administratora
*/
function mailWithLinkToChangePassword($user, $hashCode)
{
$mailHtmlHead = stMailer::getHtmlMailDescription("header");
$mailHtmlFoot = stMailer::getHtmlMailDescription("footer");
$sendLinkToPasswordToUserHtmlMailMessage = stMailTemplate::render('sendLinkToPasswordToUserHtml', array(
'user' => $user,
'hashCode' => $hashCode,
'head' => $mailHtmlHead,
'foot' => $mailHtmlFoot,
'date' => date("Y-m-d H:i:s")
));
$mailPlainHead = stMailer::getPlainMailDescription("header");
$mailPlainFoot = stMailer::getPlainMailDescription("footer");
$sendLinkToPasswordToUserPlainMailMessage = stMailTemplate::render('sendLinkToPasswordToUserPlain', array(
'user' => $user,
'hashCode' => $hashCode,
'head' => $mailPlainHead,
'foot' => $mailPlainFoot,
'date' => date("Y-m-d H:i:s")
));
$mail = stMailer::getInstance();
return $mail->setSubject($this->getRequest()->getHost().' - '.__('Link do zmiany hasła dla konta').": ".$user)->setHtmlMessage($sendLinkToPasswordToUserHtmlMailMessage)->setPlainMessage($sendLinkToPasswordToUserPlainMailMessage)->setTo($user)->sendToClient();
}
/**
* Uchwyt do walidatora edycji hasła.
*/
public function handleErrorRemindPassword()
{
$this->send_true = 0;
return sfView::SUCCESS;
}
/**
* Uchwyt do walidatora edycji hasła.
*/
public function validateRemindPassword()
{
$error_exists = false;
if ($this->getRequest()->getMethod() == sfRequest::POST)
{
$i18n = $this->getContext()->getI18N();
$validator = new stCaptchaGDValidator();
$validator->initialize($this->getContext(), array('captcha_error' => 'Wprowadzono zły numer.'));
$captcha = $this->getRequestParameter('captcha');
if (!$validator->execute($captcha, $error))
{
$this->getRequest()->setError('captcha', $error);
$error_exists = true;
}
$c = new Criteria();
$c->add(sfGuardUserPeer::USERNAME , $this->getRequestParameter('remind[email]'));
$user = sfGuardUserPeer::doSelectOne($c);
if($user)
{
$c = new Criteria();
$c->add(sfGuardGroupPeer::NAME , 'admin');
$idUserGroupAdmin = sfGuardGroupPeer::doSelectOne($c);
$c = new Criteria();
$c->add(sfGuardUserGroupPeer::USER_ID , $user->getId());
$c->add(sfGuardUserGroupPeer::GROUP_ID , $idUserGroupAdmin->getId());
$userGroup = sfGuardUserGroupPeer::doSelectOne($c);
if(!$userGroup)
{
$this->getRequest()->setError('remind{email}', $i18n->__('Nie ma takiego administratora.'));
$error_exists = true;
}
}
else
{
$this->getRequest()->setError('remind{email}', $i18n->__('Nie ma takiego administratora.'));
$error_exists = true;
}
}
return !$error_exists;
}
}
?>