UPGRADE NOTE:
Do not edit or add to this file if you wish to upgrade AbanteCart to newer
versions in the future. If you wish to customize AbanteCart for your
needs please refer to http://www.AbanteCart.com for more information.
------------------------------------------------------------------------------*/
if (! defined ( 'DIR_CORE' )) {
header ( 'Location: static_pages/' );
}
class ControllerPagesAccountCreate extends AController {
public $errors = array();
public $data;
public function main() {
//init controller data
$this->extensions->hk_InitData($this,__FUNCTION__);
if ($this->customer->isLogged()) {
$this->redirect($this->html->getSecureURL('account/account'));
}
$this->document->setTitle( $this->language->get('heading_title') );
$this->loadModel('account/customer');
$request_data = $this->request->post;
if ( $this->request->is_POST()) {
$this->errors = array_merge($this->errors,$this->model_account_customer->validateRegistrationData($request_data));
if ( !$this->errors ) {
//if allow login as email, need to set loginname = email
if (!$this->config->get('prevent_email_as_login')) {
$request_data['loginname'] = $request_data['email'];
}
$customer_id = $this->model_account_customer->addCustomer($request_data);
unset($this->session->data['guest']);
//login customer after create account is approvement and email activation are disabled in settings
if (!$this->config->get('config_customer_approval') && !$this->config->get('config_customer_email_activation') ){
$this->customer->login($request_data['loginname'], $request_data['password']);
}
$this->loadLanguage('mail/account_create');
$subject = sprintf($this->language->get('text_subject'), $this->config->get('store_name'));
$message = sprintf($this->language->get('text_welcome'), $this->config->get('store_name')) . "\n\n";
if (!$this->config->get('config_customer_approval')) {
if($this->config->get('config_customer_email_activation')){
$activation = true; // sign of activation email
$code = md5(mt_rand(1,3000));
$email = $this->request->post['email'];
$this->session->data['activation'] = array(
'customer_id' => $customer_id,
'code' => $code,
'email' => $email);
$message .= sprintf($this->language->get('text_activate'), "\n".$this->html->getSecureURL('account/login', '&activation='.$code.'&email='.$email) ) . "\n";
}else{
$message .= $this->language->get('text_login') . "\n";
}
} else {
$message .= $this->language->get('text_approval') . "\n";
}
if( !$activation ){
$message .= $this->html->getSecureURL('account/login') . "\n\n";
$message .= $this->language->get('text_services') . "\n\n";
}
$message .= $this->language->get('text_thanks') . "\n";
$message .= $this->config->get('store_name');
$mail = new AMail( $this->config );
$mail->setTo($this->request->post['email']);
$mail->setFrom($this->config->get('store_main_email'));
$mail->setSender($this->config->get('store_name'));
$mail->setSubject($subject);
$mail->setText(html_entity_decode($message, ENT_QUOTES, 'UTF-8'));
$mail->send();
$this->extensions->hk_UpdateData($this,__FUNCTION__);
if(has_value( $this->session->data['redirect'] )){
$redirect_url = $this->session->data['redirect'];
}else{
$redirect_url = $this->html->getSecureURL('account/success');
}
$this->redirect($redirect_url);
}
}
$this->document->initBreadcrumb( array (
'href' => $this->html->getURL('index/home'),
'text' => $this->language->get('text_home'),
'separator' => FALSE
));
$this->document->addBreadcrumb( array (
'href' => $this->html->getURL('account/account'),
'text' => $this->language->get('text_account'),
'separator' => $this->language->get('text_separator')
));
$this->document->addBreadcrumb( array (
'href' => $this->html->getURL('account/create'),
'text' => $this->language->get('text_create'),
'separator' => $this->language->get('text_separator')
));
if($this->config->get('prevent_email_as_login')){
$this->data['noemaillogin'] = true;
}
$form = new AForm();
$form->setForm(array( 'form_name' => 'AccountFrm' ));
$this->data['form'][ 'form_open' ] = $form->getFieldHtml( array( 'type' => 'form',
'name' => 'AccountFrm',
'action' => $this->html->getSecureURL('account/create')));
if($this->config->get('prevent_email_as_login')){ // require login name
$this->data['form'][ 'loginname' ] = $form->getFieldHtml( array(
'type' => 'input',
'name' => 'loginname',
'value' => $this->request->post['loginname'],
'required' => true ));
}
$this->data['form'][ 'firstname' ] = $form->getFieldHtml( array(
'type' => 'input',
'name' => 'firstname',
'value' => $this->request->post['firstname'],
'required' => true ));
$this->data['form'][ 'lastname' ] = $form->getFieldHtml( array(
'type' => 'input',
'name' => 'lastname',
'value' => $this->request->post['lastname'],
'required' => true ));
$this->data['form'][ 'email' ] = $form->getFieldHtml( array(
'type' => 'input',
'name' => 'email',
'value' => $this->request->get_or_post('email'),
'required' => true ));
$this->data['form'][ 'telephone' ] = $form->getFieldHtml( array(
'type' => 'input',
'name' => 'telephone',
'value' => $this->request->post['telephone']
));
$this->data['form'][ 'fax' ] = $form->getFieldHtml( array(
'type' => 'input',
'name' => 'fax',
'value' => $this->request->post['fax'],
'required' => false ));
$this->data['form'][ 'company' ] = $form->getFieldHtml( array(
'type' => 'input',
'name' => 'company',
'value' => $this->request->post['company'],
'required' => false ));
$this->data['form'][ 'address_1' ] = $form->getFieldHtml( array(
'type' => 'input',
'name' => 'address_1',
'value' => $this->request->post['address_1'],
'required' => true ));
$this->data['form'][ 'address_2' ] = $form->getFieldHtml( array(
'type' => 'input',
'name' => 'address_2',
'value' => $this->request->post['address_2'],
'required' => false ));
$this->data['form'][ 'city' ] = $form->getFieldHtml( array(
'type' => 'input',
'name' => 'city',
'value' => $this->request->post['city'],
'required' => true ));
$this->data['form'][ 'postcode' ] = $form->getFieldHtml( array(
'type' => 'input',
'name' => 'postcode',
'value' => $this->request->post['postcode'],
'required' => true ));
$this->loadModel('localisation/country');
$countries = $this->model_localisation_country->getCountries();
$options = array("FALSE" => $this->language->get('text_select') );
foreach($countries as $item){
$options[ $item['country_id'] ] = $item['name'];
}
$this->data['form'][ 'country_id' ] = $form->getFieldHtml( array(
'type' => 'selectbox',
'name' => 'country_id',
'options'=>$options,
'value' => ( isset($this->request->post['country_id']) ? $this->request->post['country_id'] : $this->config->get('config_country_id')),
'required' => true ));
$this->view->assign('zone_id', $this->request->post['zone_id'], 'FALSE' );
$this->data['form'][ 'zone_id' ] = $form->getFieldHtml( array(
'type' => 'selectbox',
'name' => 'zone_id',
'required' => true ));
$this->data['form'][ 'password' ] = $form->getFieldHtml( array(
'type' => 'password',
'name' => 'password',
'value' => $this->request->post['password'],
'required' => true ));
$this->data['form'][ 'confirm' ] = $form->getFieldHtml( array(
'type' => 'password',
'name' => 'confirm',
'value' => $this->request->post['confirm'],
'required' => true ));
$newsletter = '';
$this->data['form'][ 'newsletter' ] = $form->getFieldHtml( array(
'type' => 'radio',
'name' => 'newsletter',
'value' => (!is_null($this->request->get_or_post('newsletter')) ? $this->request->get_or_post('newsletter') : -1),
'options' => array(
'1' => $this->language->get('text_yes'),
'0' => $this->language->get('text_no'),
) ));
$agree = isset($this->request->post['agree']) ? $this->request->post['agree'] : FALSE;
$this->data['form'][ 'agree' ] = $form->getFieldHtml( array(
'type' => 'checkbox',
'name' => 'agree',
'value' => 1,
'checked' => $agree ));
$this->data['form'][ 'continue' ] = $form->getFieldHtml( array(
'type' => 'submit',
'name' => $this->language->get('button_continue') ));
$this->data['error_warning'] = $this->errors['warning'];
$this->data['error_loginname'] = $this->errors['loginname'];
$this->data['error_firstname'] = $this->errors['firstname'];
$this->data['error_lastname'] = $this->errors['lastname'];
$this->data['error_email'] = $this->errors['email'];
$this->data['error_telephone'] = $this->errors['telephone'];
$this->data['error_password'] = $this->errors['password'];
$this->data['error_confirm'] = $this->errors['confirm'];
$this->data['error_address_1'] = $this->errors['address_1'];
$this->data['error_city'] = $this->errors['city'];
$this->data['error_postcode'] = $this->errors['postcode'];
$this->data['error_country'] = $this->errors['country'];
$this->data['error_zone'] = $this->errors['zone'];
$this->data['action'] = $this->html->getSecureURL('account/create') ;
$this->data['newsletter'] = $this->request->post['newsletter'];
if ($this->config->get('config_account_id')) {
$this->loadModel('catalog/content');
$content_info = $this->model_catalog_content->getContent($this->config->get('config_account_id'));
if ($content_info) {
$text_agree = $this->language->get('text_agree');
$this->data['text_agree_href'] = $this->html->getURL('r/content/content/loadInfo', '&content_id=' . $this->config->get('config_account_id'));
$this->data['text_agree_href_text'] = $content_info['title'];
} else {
$text_agree = '';
}
} else {
$text_agree = '';
}
$this->data['text_agree'] = $text_agree;
$text_account_already = sprintf($this->language->get('text_account_already'), $this->html->getSecureURL('account/login') );
$this->data['text_account_already'] = $text_account_already;
$this->view->batchAssign($this->data);
$this->processTemplate('pages/account/create.tpl');
//init controller data
$this->extensions->hk_UpdateData($this,__FUNCTION__);
}
}