<?php
/***************************************************************************
* Dolphin Smart Community Builder
* -----------------
* begin : Mon Mar 23 2006
* copyright : (C) 2006 BoonEx Group
* website : http://www.boonex.com/
* This file is part of Dolphin - Smart Community Builder
*
* Dolphin is free software. This work is licensed under a Creative Commons Attribution 3.0 License.
*
* Dolphin is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the Creative Commons Attribution 3.0 License for more details.
* You should have received a copy of the Creative Commons Attribution 3.0 License along with Dolphin,
* see license.txt file; if not, write to marketing@boonex.com
***************************************************************************/
require_once( 'inc/header.inc.php' );
require_once( BX_DIRECTORY_PATH_INC . 'design.inc.php' );
require_once( BX_DIRECTORY_PATH_INC . 'profiles.inc.php' );
require_once( BX_DIRECTORY_PATH_INC . 'utils.inc.php' );
bx_import( 'BxDolEmailTemplates' );
bx_import( 'BxTemplFormView' );
class BxDolForgotCheckerHelper extends BxDolFormCheckerHelper {
function checkEmail($s) {
if (!preg_match( '/^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel)$/i', $s ))
return false;
$iID = (int)db_value( "SELECT `ID` FROM `Profiles` WHERE `Email` = '$s'" );
if (!$iID)
return _t( '_MEMBER_NOT_RECOGNIZED', $site['title'] );
return true;
}
}
// --------------- page variables and login
$_page['name_index'] = 37; // there is no page_37.html in templates/base
$_page['css_name']= 'forgot.css';
$logged['member'] = member_auth( 0, false );
$_page['header'] = _t( "_Forgot password?" );
$_page['header_text'] = _t( "_Password retrieval", 'The sports wonk | Sports social network' );
// --------------- page components
$_ni = $_page['name_index'];
$aForm = array(
'form_attrs' => array(
'name' => 'forgot_form',
'action' => BX_DOL_URL_ROOT . 'forgot.php',
'method' => 'post',
),
'params' => array (
'db' => array(
'submit_name' => 'do_submit',
),
'checker_helper' => 'BxDolForgotCheckerHelper',
),
'inputs' => array(
array(
'type' => 'email',
'name' => 'Email',
'caption' => _t('_My Email'),
'value' => isset($_POST['Email']) ? $_POST['Email'] : '',
'required' => true,
'checker' => array(
'func' => 'email',
'error' => _t( '_Incorrect Email' )
),
),
array(
'type' => 'captcha',
'name' => 'captcha',
'caption' => _t('_Enter Captcha'),
'required' => true,
'checker' => array(
'func' => 'captcha',
'error' => _t( '_Incorrect Captcha' ),
),
),
array(
'type' => 'submit',
'name' => 'do_submit',
'value' => _t( "_Retrieve my information" ),
'colspan' => true,
),
)
);
$oForm = new BxTemplFormView($aForm);
$oForm->initChecker();
if ( $oForm->isSubmittedAndValid() )
{
// Check if entered email is in the base
$sEmail = process_db_input($_POST['Email'], BX_TAGS_STRIP);
$memb_arr = db_arr( "SELECT `ID` FROM `Profiles` WHERE `Email` = '$sEmail'" );
$recipient = $sEmail;
$rEmailTemplate = new BxDolEmailTemplates();
$aTemplate = $rEmailTemplate -> getTemplate( 't_Forgot', $memb_arr['ID'] ) ;
$aPlus['Password'] = generateUserNewPwd($memb_arr['ID']);
$aProfile = getProfileInfo($memb_arr['ID']);
$mail_ret = sendMail( $recipient, $aTemplate['Subject'], $aTemplate['Body'], $memb_arr['ID'], $aPlus);
// create system event
require_once(BX_DIRECTORY_PATH_CLASSES . 'BxDolAlerts.php');
$oZ = new BxDolAlerts('profile', 'password_restore', $memb_arr['ID']);
$oZ->alert();
$_page['header'] = _t( "_Recognized" );
$_page['header_text'] = _t( "_RECOGNIZED", $site['title'] );
if ($mail_ret)
$action_result = _t( "_MEMBER_RECOGNIZED_MAIL_SENT", $site['url'], $site['title'] );
else
$action_result = _t( "_MEMBER_RECOGNIZED_MAIL_NOT_SENT", $site['title'] );
$sForm = '';
} else {
$action_result = _t( "_FORGOT", $site['title'] );
$sForm = $oForm->getCode();
}
$sPageCode = <<<BLAH
<div class="action_result">
$action_result
</div>
$sForm
BLAH;
$_page_cont[$_ni]['page_main_code'] = $sPageCode;
// --------------- [END] page components
PageCode();
// --------------- page components functions
function generateUserNewPwd($ID)
{
$sPwd = genRndPwd();
$sSalt = genRndSalt();
$sQuery = "
UPDATE `Profiles`
SET
`Password` = '" . encryptUserPwd($sPwd, $sSalt) . "',
`Salt` = '$sSalt'
WHERE
`ID`='$ID'
";
db_res($sQuery);
createUserDataFile($ID);
require_once(BX_DIRECTORY_PATH_CLASSES . 'BxDolAlerts.php');
$oZ = new BxDolAlerts('profile', 'edit', $ID);
$oZ->alert();
return $sPwd;
}
?>