Beispiel #1
0
 /**
  * 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;
 }
Beispiel #2
0
 /**
  * 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;
 }