cancel
Showing results for 
Search instead for 
Did you mean: 

Notice: Undefined variable (Register New Customer)

Notice: Undefined variable (Register New Customer)

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();
    }
}