public function save($values, $options = array()) { $result = new stdClass(); $result->error = false; Citruscart::load('CitruscartHelperUser', 'helpers.user'); $userHelper = new CitruscartHelperUser(); JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_citruscart/tables'); $userinfo = JTable::getInstance('UserInfo', 'CitruscartTable'); $user_id = $values["user_id"]; $create_account = $values["checkout_method"] == 'register' ? true : false; $guest_checkout = $this->defines->get('guest_checkout_enabled', '1'); if ($values["checkout_method"] == "guest") { // save the real user info in the userinfo table $userinfo->user_id = $user_id; $userinfo->email = $values['email_address']; if (!$userinfo->save()) { $result->error = true; $this->setError($userinfo->getError()); } // save the billing and shipping addresses? //$this->setAddresses($submitted_values, true, true); } elseif ($values["checkout_method"] == "register") { // create a new user from billing info $details = array('email' => $values['email_address'], 'name' => $values['billing_input_first_name'] . ' ' . $values['billing_input_middle_name'] . ' ' . $values['billing_input_last_name'], 'username' => $values['email_address']); if (strlen(trim($details['name'])) == 0) { $details['name'] = JText::_('COM_CITRUSCART_USER'); } $details['password'] = $values["register-new-password"]; $details['password2'] = $values["register-new-password2"]; if (!($user = $userHelper->createNewUser($details))) { $result->error = true; //$this->setError( $user->getError() ); } else { $userHelper->login(array('username' => $user->username, 'password' => $details['password'])); $user_id = $user->id; $userinfo->load(array('user_id' => $user_id)); $userinfo->user_id = $user_id; $userinfo->first_name = $values['billing_input_first_name']; $userinfo->last_name = $values['billing_input_last_name']; $userinfo->company = $values['billing_input_company']; $userinfo->middle_name = $values['billing_input_middle_name']; $userinfo->phone_1 = $values['billing_input_phone_1']; $userinfo->email = $values['email_address']; if (!$userinfo->save()) { $result->error = true; $this->setError($userinfo->getError()); } } } $result->user_id = $user_id; $result->userinfo = $userinfo; $this->result = $result; DSCModel::addIncludePath(JPATH_SITE . '/components/com_citruscart/models'); $model = DSCModel::getInstance('Userinfo', 'CitruscartModel'); $model->clearCache(); if ($result->error) { return false; } return $result; }