Hello!
My customer account register form is appearing this error when I try register a new account:
Notice: Undefined variable: data in /home/clientes/grupofiscall/public_html/diaadiatributario.com.br/app/code/local/Diaadia/Usuario/controllers/AccountController.php on line 142
Code file "AccountController.php":
<?php require_once(Mage::getModuleDir('controllers', 'Mage_Customer') . DS . 'AccountController.php'); class Diaadia_Usuario_AccountController extends Mage_Customer_AccountController { /** * Action predispatch * * Check customer authentication for some actions */ public function preDispatch() { Mage_Core_Controller_Front_Action::preDispatch(); if (!$this->getRequest()->isDispatched()) { return; } $action = $this->getRequest()->getActionName(); $openActions = array( 'create', 'login', 'logoutsuccess', 'forgotpassword', 'forgotpasswordpost', 'resetpassword', 'resetpasswordpost', 'confirm', 'confirmation', 'plano', 'tempoassinatura', 'newsletter', 'politicasdeuso', 'confirmacao' ); $pattern = '/^(' . implode('|', $openActions) . ')/i'; if (!preg_match($pattern, $action)) { if (!$this->_getSession()->authenticate($this)) { $this->setFlag('', 'no-dispatch', true); } } else { $this->_getSession()->setNoReferer(true); } } public function planoAction() { $this->loadLayout(); $this->getLayout()->getBlock('head')->setTitle($this->__('Escolha do Plano')); $this->renderLayout(); } public function tempoassinaturaAction() { $this->loadLayout(); $this->getLayout()->getBlock('head')->setTitle($this->__('Tempo de assinatura')); $this->renderLayout(); } public function newsletterAction() { $this->loadLayout(); $this->getLayout()->getBlock('head')->setTitle($this->__('Cadastro Newsletter')); $this->renderLayout(); } public function politicasdeusoAction() { $this->loadLayout(); $this->getLayout()->getBlock('head')->setTitle($this->__('Políticas de uso')); $this->renderLayout(); } public function confirmacaoAction() { $this->loadLayout(); $this->getLayout()->getBlock('head')->setTitle($this->__('Confirmação')); $this->renderLayout(); } public function getPriceHtml($product) { $this->setTemplate('catalog/product/price.phtml'); $this->setProduct($product); return $this->toHtml(); } public function downloadsAction() { $this->loadLayout(); $this->getLayout()->getBlock('head')->setTitle($this->__('Downloads')); $this->renderLayout(); } public function publicarAction() { $this->loadLayout(); $this->getLayout()->getBlock('head')->setTitle($this->__('Publicação')); $this->renderLayout(); } /** * Create customer account action */ public function createPostAction() { /** @var $session Mage_Customer_Model_Session */ $session = $this->_getSession(); if ($session->isLoggedIn()) { $this->_redirect('*/*/'); return; } $customer = $this->_getCustomer(); $session->setEscapeMessages(true); // prevent XSS injection in user input if (!$this->getRequest()->isPost()) { $errUrl = $this->_getUrl('*/*/create', array('_secure' => true)); $this->_redirectError($errUrl); return; }else{ $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); if($this->getRequest()->getPost('tipo-pessoa') == "Física"){ $data = $this->getRequest()->getPost('fisica'); $data['tipo_pessoa'] = 'Física'; }elseif($this->getRequest()->getPost('tipo-pessoa') == "Jurídica"){ $data = $this->getRequest()->getPost('juridica'); $data['tipo_pessoa'] = 'Jurídica'; } if(strlen($data['day']) == 1){ $data['day'] = '0'.$data['day']; } if(strlen($data['month']) == 1){ $data['month'] = '0'.$data['month']; } $data['dob'] = $data['year'].'/'.$data['month'].'/'.$data['day']; $verifica = Mage::getModel('customer/customer'); $verifica->setWebsiteId(Mage::app()->getWebsite()->getId()); $verifica->loadByEmail($data['email']); if ($verifica->getId() > 0 ) { $this->_redirectError(Mage::getUrl('*/*/create/error/exists/', array('_secure' => true))); } $customer->setGroupId(1); $customer->setData($data); } try { $errors = $this->_getCustomerErrorsTipo($customer); if (empty($errors)) { $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.')); } $errUrl = $this->_getUrl('*/*/create', array('_secure' => true)); $this->_redirectError($errUrl); } /** * Success Registration * * @param Mage_Customer_Model_Customer $customer * @return Mage_Customer_AccountController */ protected function _successProcessRegistration(Mage_Customer_Model_Customer $customer) { $session = $this->_getSession(); if ($customer->isConfirmationRequired()) { /** @var $app Mage_Core_Model_App */ $app = $this->_getApp(); /** @var $store Mage_Core_Model_Store*/ $store = $app->getStore(); $customer->sendNewAccountEmail( 'confirmation', $session->getBeforeAuthUrl(), $store->getId() ); $customerHelper = $this->_getHelper('customer'); $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>.', $customerHelper->getEmailConfirmationUrl($customer->getEmail()))); $url = $this->_getUrl('*/*/index', array('_secure' => true)); } else { $session->setCustomerAsLoggedIn($customer); $session->renewSession(); $url = $this->_welcomeCustomer($customer); } //$this->_redirectSuccess($url); $this->_redirect('customer/account/politicasdeuso/'); return $this; } /** * Validate customer data and return errors if they are * * @param Mage_Customer_Model_Customer $customer * @return array|string */ protected function _getCustomerErrorsTipo($customer) { $errors = array(); $request = $this->getRequest(); if ($request->getPost('create_address')) { $errors = $this->_getErrorsOnCustomerAddress($customer); } $customerForm = $this->_getCustomerForm($customer); $customerData = $customer->getData(); $customerErrors = $customerForm->validateData($customerData); if ($customerErrors !== true) { $errors = array_merge($customerErrors, $errors); } else { $customerForm->compactData($customerData); $customer->setPassword($customerData['password']); $customer->setConfirmation($customerData['confirmation']); $customerErrors = $customer->validate(); if (is_array($customerErrors)) { $errors = array_merge($customerErrors, $errors); } } return $errors; } /** * Gets customer address * * @param $customer * @return array $errors */ protected function _getErrorsOnCustomerAddress($customer) { $errors = array(); /* @var $address Mage_Customer_Model_Address */ $address = $this->_getModel('customer/address'); /* @var $addressForm Mage_Customer_Model_Form */ $addressForm = $this->_getModel('customer/form'); $addressForm->setFormCode('customer_register_address') ->setEntity($address); $addressData = $customer->getData();//$addressForm->extractData($this->getRequest(), 'address', false); $addressErrors = $addressForm->validateData($addressData); if (is_array($addressErrors)) { $errors = array_merge($errors, $addressErrors); } $address->setId(null) ->setIsDefaultBilling($addressData['default_billing']) ->setIsDefaultShipping($addressData['default_shipping']); $addressForm->compactData($addressData); $customer->addAddress($address); $addressErrors = $address->validate(); if (is_array($addressErrors)) { $errors = array_merge($errors, $addressErrors); } return $errors; } /** * Forgot customer password action */ public function forgotPasswordPostAction() { $tipo = $this->getRequest()->getPost('tipo-pessoa', 'fisica'); $campo = $tipo === 'juridica' ? 'cnpj' : 'cpf'; $nome = strtoupper($campo); $taxvat = $this->getRequest()->getPost($campo, null); if ($taxvat) { if (!Zend_Validate::is($taxvat , 'NotEmpty')) { $this->_getSession()->addError($this->__($nome . ' inválido.')); $this->_redirect('cliente/conta/recuperar-senha'); return; } /** @var $customer Mage_Customer_Model_Customer */ $collection = Mage::getModel('customer/customer')->getCollection()->addFieldToFilter('taxvat', $taxvat)->load(); if ($collection->getSize()) { foreach($collection as $val) { $customer = $val; } if ($customer->getId()) { try { $newResetPasswordLinkToken = $this->_getHelper('customer')->generateResetPasswordLinkToken(); $customer->changeResetPasswordLinkToken($newResetPasswordLinkToken); $customer->sendPasswordResetConfirmationEmail(); } catch (Exception $exception) { $this->_getSession()->addError($exception->getMessage()); $this->_redirect('cliente/conta/recuperar-senha'); return; } } $this->_getSession() ->addSuccess( $this->_getHelper('customer') ->__('Se houver uma conta associada à %s você receberá um email com link para refazer sua senha.', $this->_getHelper('customer')->escapeHtml($taxvat))); $this->_redirect('cliente/conta/'); return; } else { $this->_getSession()->addError($this->__('Informe seu CPF ou CNPJ corretamente.')); $this->_redirect('cliente/conta/recuperar-senha'); return; } } else { $this->_getSession()->addError($this->__('Informe seu CPF ou CNPJ corretamente.')); $this->_redirect('cliente/conta/recuperar-senha'); return; } } /** * Change customer password action */ public function editPostAction() { if (!$this->_validateFormKey()) { return $this->_redirect('*/*/edit'); } if ($this->getRequest()->isPost()) { /** @var $customer Mage_Customer_Model_Customer */ $customer = $this->_getSession()->getCustomer(); /** @var $customerForm Mage_Customer_Model_Form */ $customerForm = $this->_getModel('customer/form'); $customerForm->setFormCode('customer_account_edit') ->setEntity($customer); $customerData = $customerForm->extractData($this->getRequest()); $mes = $this->getRequest()->getParam('month'); if (count($mes) == 1) { $mes = '0' . $mes; } $customerData['dob'] = $this->getRequest()->getParam('year').'/'.$mes.'/'.$this->getRequest()->getParam('day'); $cnpj = $this->getRequest()->getParam('vat_id'); if(isset($cnpj) and !empty($cnpj)){ $address = Mage::getModel('customer/address'); $addressId = $this->getRequest()->getParam('id'); if ($addressId) { $existsAddress = $customer->getAddressById($addressId); if ($existsAddress->getId() && $existsAddress->getCustomerId() == $customer->getId()) { $address->setId($existsAddress->getId()); } } $address->setCustomerId($customer->getId()) ->setIsDefaultBilling(true) ->setIsDefaultShipping(true) ->setVatId($cnpj); $address->save(); } $errors = array(); $customerErrors = $customerForm->validateData($customerData); if ($customerErrors !== true) { $errors = array_merge($customerErrors, $errors); } else { $customerForm->compactData($customerData); $errors = array(); // If password change was requested then add it to common validation scheme if ($this->getRequest()->getParam('change_password')) { $currPass = $this->getRequest()->getPost('current_password'); $newPass = $this->getRequest()->getPost('password'); $confPass = $this->getRequest()->getPost('confirmation'); $oldPass = $this->_getSession()->getCustomer()->getPasswordHash(); if ( $this->_getHelper('core/string')->strpos($oldPass, ':')) { list($_salt, $salt) = explode(':', $oldPass); } else { $salt = false; } if ($customer->hashPassword($currPass, $salt) == $oldPass) { if (strlen($newPass)) { /** * Set entered password and its confirmation - they * will be validated later to match each other and be of right length */ $customer->setPassword($newPass); $customer->setConfirmation($confPass); } else { $errors[] = $this->__('New password field cannot be empty.'); } } else { $errors[] = $this->__('Invalid current password'); } } // Validate account and compose list of errors if any $customerErrors = $customer->validate(); if (is_array($customerErrors)) { $errors = array_merge($errors, $customerErrors); } } if (!empty($errors)) { $this->_getSession()->setCustomerFormData($this->getRequest()->getPost()); foreach ($errors as $message) { $this->_getSession()->addError($message); } $this->_redirect('*/*/editar'); return $this; } try { $customer->setConfirmation(null); $customer->save(); $this->_getSession()->setCustomer($customer) ->addSuccess($this->__('The account information has been saved.')); $this->_redirect('cliente/conta'); return; } catch (Mage_Core_Exception $e) { $this->_getSession()->setCustomerFormData($this->getRequest()->getPost()) ->addError($e->getMessage()); } catch (Exception $e) { $this->_getSession()->setCustomerFormData($this->getRequest()->getPost()) ->addException($e, $this->__('Cannot save the customer.')); } } $this->_redirect('*/*/editar'); } protected function _loginPostRedirect() { if (Mage::app()->getStore()->getCode() == 'mobile'){ $referer = $this->getRequest()->getParam(Mage_Customer_Helper_Data::REFERER_QUERY_PARAM_NAME); if ($referer) { $url = $this->_getHelper('core')->urlDecode($referer); $this->_redirectUrl($url); return; } } parent::_loginPostRedirect(); } }