/**
  * return version
  *
  * @return unknown
  */
 private function getVersion()
 {
     $version = mage::getVersion();
     $t = explode('.', $version);
     return $t[0] . '.' . $t[1];
 }
 /**
  * Create customer account action
  */
 public function createPostAction()
 {
     $data = $this->getRequest()->getPost();
     $isKeyHash = false;
     $field_1 = Mage::helper("nomorespam")->getNmsField1();
     $empty_text = Mage::helper("nomorespam")->getNmsField2();
     if (isset($data[$field_1]) && isset($data[$empty_text])) {
         $isKeyHash = $this->checkHashKey($data[$field_1], $data[$empty_text]);
     }
     //else $isKeyHash = true; //
     $enable_create_account = mage::getStoreConfig("no_more_spam/no_spam/create_account");
     if (!$enable_create_account) {
         $isKeyHash = true;
     }
     // if this section is off in nomorespam config then don't check our fields
     $version_magento = substr(mage::getVersion(), 0, 3);
     /** @var $session Mage_Customer_Model_Session */
     $session = $this->_getSession();
     if ($session->isLoggedIn()) {
         $this->_redirect('*/*/');
         return;
     }
     $session->setEscapeMessages(true);
     // prevent XSS injection in user input
     if ($version_magento == '1.9') {
         if (!$this->getRequest()->isPost()) {
             $errUrl = $this->_getUrl('*/*/create', array('_secure' => true));
             $this->_redirectError($errUrl);
             return;
         }
     }
     if ($version_magento == '1.9') {
         if ($isKeyHash) {
             $customer = $this->_getCustomer();
             try {
                 $errors = $this->_getCustomerErrors($customer);
                 if (empty($errors)) {
                     $customer->cleanPasswordsValidationData();
                     $customer->save();
                     $this->_dispatchRegisterSuccess($customer);
                     $this->_successProcessRegistration($customer);
                     return;
                 } else {
                     $this->_addSessionError($errors);
                 }
             } catch (Mage_Core_Exception $e) {
                 $session->setCustomerFormData($this->getRequest()->getPost());
                 if ($e->getCode() === Mage_Customer_Model_Customer::EXCEPTION_EMAIL_EXISTS) {
                     $url = $this->_getUrl('customer/account/forgotpassword');
                     $message = $this->__('There is already an account with this email address. If you are sure that it is your email address, <a href="%s">click here</a> to get your password and access your account.', $url);
                     $session->setEscapeMessages(false);
                 } else {
                     $message = $e->getMessage();
                 }
                 $session->addError($message);
             } catch (Exception $e) {
                 $session->setCustomerFormData($this->getRequest()->getPost())->addException($e, $this->__('Cannot save the customer.'));
             }
         }
     } elseif ($version_magento != '1.9') {
         if ($isKeyHash) {
             if ($this->getRequest()->isPost()) {
                 $errors = array();
                 if (!($customer = Mage::registry('current_customer'))) {
                     $customer = Mage::getModel('customer/customer')->setId(null);
                 }
                 /* @var $customerForm Mage_Customer_Model_Form */
                 $customerForm = Mage::getModel('customer/form');
                 $customerForm->setFormCode('customer_account_create')->setEntity($customer);
                 $customerData = $customerForm->extractData($this->getRequest());
                 if ($this->getRequest()->getParam('is_subscribed', false)) {
                     $customer->setIsSubscribed(1);
                 }
                 /**
                  * Initialize customer group id
                  */
                 $customer->getGroupId();
                 if ($this->getRequest()->getPost('create_address')) {
                     /* @var $address Mage_Customer_Model_Address */
                     $address = Mage::getModel('customer/address');
                     /* @var $addressForm Mage_Customer_Model_Form */
                     $addressForm = Mage::getModel('customer/form');
                     $addressForm->setFormCode('customer_register_address')->setEntity($address);
                     $addressData = $addressForm->extractData($this->getRequest(), 'address', false);
                     $addressErrors = $addressForm->validateData($addressData);
                     if ($addressErrors === true) {
                         $address->setId(null)->setIsDefaultBilling($this->getRequest()->getParam('default_billing', false))->setIsDefaultShipping($this->getRequest()->getParam('default_shipping', false));
                         $addressForm->compactData($addressData);
                         $customer->addAddress($address);
                         $addressErrors = $address->validate();
                         if (is_array($addressErrors)) {
                             $errors = array_merge($errors, $addressErrors);
                         }
                     } else {
                         $errors = array_merge($errors, $addressErrors);
                     }
                 }
                 try {
                     $customerErrors = $customerForm->validateData($customerData);
                     if ($customerErrors !== true) {
                         $errors = array_merge($customerErrors, $errors);
                     } else {
                         $customerForm->compactData($customerData);
                         $customer->setPassword($this->getRequest()->getPost('password'));
                         $customer->setConfirmation($this->getRequest()->getPost('confirmation'));
                         $customerErrors = $customer->validate();
                         if (is_array($customerErrors)) {
                             $errors = array_merge($customerErrors, $errors);
                         }
                     }
                     $validationResult = count($errors) == 0;
                     if (true === $validationResult) {
                         $customer->save();
                         Mage::dispatchEvent('customer_register_success', array('account_controller' => $this, 'customer' => $customer));
                         if ($customer->isConfirmationRequired()) {
                             $customer->sendNewAccountEmail('confirmation', $session->getBeforeAuthUrl(), Mage::app()->getStore()->getId());
                             $session->addSuccess($this->__('Account confirmation is required. Please, check your email for the confirmation link. To resend the confirmation email please <a href="%s">click here</a>.', Mage::helper('customer')->getEmailConfirmationUrl($customer->getEmail())));
                             $this->_redirectSuccess(Mage::getUrl('*/*/index', array('_secure' => true)));
                             return;
                         } else {
                             $session->setCustomerAsLoggedIn($customer);
                             $url = $this->_welcomeCustomer($customer);
                             $this->_redirectSuccess($url);
                             return;
                         }
                     } else {
                         $session->setCustomerFormData($this->getRequest()->getPost());
                         if (is_array($errors)) {
                             foreach ($errors as $errorMessage) {
                                 $session->addError($errorMessage);
                             }
                         } else {
                             $session->addError($this->__('Invalid customer data'));
                         }
                     }
                 } catch (Mage_Core_Exception $e) {
                     $session->setCustomerFormData($this->getRequest()->getPost());
                     if ($e->getCode() === Mage_Customer_Model_Customer::EXCEPTION_EMAIL_EXISTS) {
                         $url = Mage::getUrl('customer/account/forgotpassword');
                         $message = $this->__('There is already an account with this email address. If you are sure that it is your email address, <a href="%s">click here</a> to get your password and access your account.', $url);
                         $session->setEscapeMessages(false);
                     } else {
                         $message = $e->getMessage();
                     }
                     $session->addError($message);
                 } catch (Exception $e) {
                     $session->setCustomerFormData($this->getRequest()->getPost())->addException($e, $this->__('Cannot save the customer.'));
                 }
             }
             $this->_redirectError(Mage::getUrl('*/*/create', array('_secure' => true)));
         }
     }
     $session->addError($this->__('Unable create account.'));
     $this->_redirect('*/*/create');
 }