/** * Main registration function used by the Register controller * Calls all previously defined helper functions to save user data * * @throws Enlight_Exception On database errors * @return boolean If the operation was successful */ public function sSaveRegister() { if ($this->eventManager->notifyUntil('Shopware_Modules_Admin_SaveRegister_Start', array('subject' => $this))) { return false; } if (!$this->session->offsetGet('sRegisterFinished')) { $register = $this->session->offsetGet('sRegister'); if (empty($register["payment"]["object"]["id"])) { // predefined payment out of the pre calculation of the shipping costs in the cart if ($this->session->offsetExists("sPaymentID")) { $register["payment"]["object"]["id"] = $this->session->offsetGet("sPaymentID"); } else { // if no predefined payment exists use the default payment $register["payment"]["object"]["id"] = $this->config->get('sDEFAULTPAYMENT'); } $this->session->offsetSet('sRegister', $register); } $this->validateRegistrationFields($register); if (!$register["payment"]["object"]["id"]) { $register["payment"]["object"]["id"] = $this->config->get('sPAYMENTDEFAULT'); } // Save main user data $userID = $this->sSaveRegisterMainData($register); if ($this->db->getErrorMessage() || !$userID) { throw new Enlight_Exception("sSaveRegister #01: Could not save data" . $this->db->getErrorMessage() . print_r($register)); } if ($register["auth"]["receiveNewsletter"]) { $this->sSaveRegisterNewsletter($register); } // Save user billing address $userBillingID = $this->sSaveRegisterBilling($userID, $register); if ($this->db->getErrorMessage() || !$userBillingID) { throw new Enlight_Exception("sSaveRegister #02: Could not save data (billing-adress)" . $this->db->getErrorMessage() . print_r($register, true)); } if ($this->config->get('sSHOPWAREMANAGEDCUSTOMERNUMBERS')) { if (!$this->eventManager->notifyUntil('Shopware_Modules_Admin_SaveRegister_GetCustomerNumber', array('subject' => $this, 'id' => $userID))) { $this->assignCustomerNumber($userID); } } // Save user shipping address if (count($register["shipping"])) { $userShippingID = $this->sSaveRegisterShipping($userID, $register); if ($this->db->getErrorMessage() || !$userShippingID) { throw new Enlight_Exception("sSaveRegister #02: Could not save data (shipping-address)" . $this->db->getErrorMessage() . print_r($register, true)); } } $uMail = $register["auth"]["email"]; $uPass = $register["auth"]["password"]; if ($register["auth"]["accountmode"] < 1) { try { $this->sSaveRegisterSendConfirmation($uMail); } catch (Exception $e) { $this->logRegistrationMailException($e, $uMail); } $this->session->offsetSet('sOneTimeAccount', false); } else { $this->session->offsetSet('sOneTimeAccount', true); } // Save referer where user comes from $referer = $this->session->offsetGet('sReferer'); if (!empty($referer)) { $this->db->insert('s_emarketing_referer', array('userID' => $userID, 'referer' => $referer, 'date' => new Zend_Date())); } $this->front->Request()->setPost('email', $uMail); $this->front->Request()->setPost('passwordMD5', $uPass); // Login user $this->sLogin(true); // The user is now registered $this->session->offsetSet('sRegisterFinished', true); $this->eventManager->notify('Shopware_Modules_Admin_SaveRegister_Successful', array('subject' => $this, 'id' => $userID, 'billingID' => $userBillingID, 'shippingID' => $userShippingID)); // Garbage $this->session->offsetUnset('sRegister'); } else { $this->front->Request()->setPost('email', $this->session->offsetGet('sUserMail')); $this->front->Request()->setPost('passwordMD5', $this->session->offsetGet('sUserPassword')); $this->sLogin($this->session->offsetGet('sOneTimeAccount')); } return true; }
/** * Main registration function used by the Register controller * Calls all previously defined helper functions to save user data * * @throws Enlight_Exception On database errors * @return boolean If the operation was successful */ public function sSaveRegister() { if ($this->eventManager->notifyUntil('Shopware_Modules_Admin_SaveRegister_Start', array('subject' => $this))) { return false; } if (!$this->session->offsetGet('sRegisterFinished')) { $register = $this->session->offsetGet('sRegister'); if (empty($register["payment"]["object"]["id"])) { $register["payment"]["object"]["id"] = $this->config->get('sDEFAULTPAYMENT'); $this->session->offsetSet('sRegister', $register); } $this->validateRegistrationFields($register); if (!$register["payment"]["object"]["id"]) { $register["payment"]["object"]["id"] = $this->config->get('sPAYMENTDEFAULT'); } // Save main user data $userID = $this->sSaveRegisterMainData($register); if ($this->db->getErrorMessage() || !$userID) { throw new Enlight_Exception("sSaveRegister #01: Could not save data" . $this->db->getErrorMessage() . print_r($register)); } if ($register["auth"]["receiveNewsletter"]) { $this->sSaveRegisterNewsletter($register); } // Save user billing address $userBillingID = $this->sSaveRegisterBilling($userID, $register); if ($this->db->getErrorMessage() || !$userBillingID) { throw new Enlight_Exception("sSaveRegister #02: Could not save data (billing-adress)" . $this->db->getErrorMessage() . print_r($register, true)); } if ($this->config->get('sSHOPWAREMANAGEDCUSTOMERNUMBERS')) { if (!$this->eventManager->notifyUntil('Shopware_Modules_Admin_SaveRegister_GetCustomerNumber', array('subject' => $this, 'id' => $userID))) { $sql = "\n UPDATE\n s_order_number, s_user_billingaddress\n SET\n s_order_number.number = s_order_number.number+1,\n s_user_billingaddress.customernumber = s_order_number.number\n WHERE s_order_number.name = 'user'\n AND s_user_billingaddress.userID = ?\n "; $this->db->query($sql, array($userID)); } } // Save user shipping address if (count($register["shipping"])) { $userShippingID = $this->sSaveRegisterShipping($userID, $register); if ($this->db->getErrorMessage() || !$userShippingID) { throw new Enlight_Exception("sSaveRegister #02: Could not save data (shipping-address)" . $this->db->getErrorMessage() . print_r($register, true)); } } $uMail = $register["auth"]["email"]; $uPass = $register["auth"]["password"]; if ($register["auth"]["accountmode"] < 1) { $this->sSaveRegisterSendConfirmation($uMail); $this->session->offsetSet('sOneTimeAccount', false); } else { $this->session->offsetSet('sOneTimeAccount', true); } // Save referer where user comes from $referer = $this->session->offsetGet('sReferer'); if (!empty($referer)) { $this->db->insert('s_emarketing_referer', array('userID' => $userID, 'referer' => $referer, 'date' => new Zend_Date())); } $this->front->Request()->setPost('email', $uMail); $this->front->Request()->setPost('passwordMD5', $uPass); // Login user $this->sLogin(true); // The user is now registered $this->session->offsetSet('sRegisterFinished', true); $this->eventManager->notify('Shopware_Modules_Admin_SaveRegister_Successful', array('subject' => $this, 'id' => $userID, 'billingID' => $userBillingID, 'shippingID' => $userShippingID)); // Garbage $this->session->offsetUnset('sRegister'); } else { $this->front->Request()->setPost('email', $this->session->offsetGet('sUserMail')); $this->front->Request()->setPost('passwordMD5', $this->session->offsetGet('sUserPassword')); $this->sLogin($this->session->offsetGet('sOneTimeAccount')); } return true; }