function registerNewUser($values) { JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tienda/tables'); // Register an User Tienda::load('TiendaHelperUser', 'helpers.user'); $userHelper = TiendaHelperUser::getInstance('User', 'TiendaHelper'); $response = array(); $response['msg'] = ''; $response['error'] = ''; if ($userHelper->emailExists($values['email_address'])) { // TODO user already exists $response['error'] = '1'; $response['msg'] = JText::_('COM_TIENDA_EMAIL_ALREADY_EXIST'); $response['key'] = 'email_address'; return $response; } else { Tienda::load('TiendaHelperUser', 'helpers.user'); $userHelper = TiendaHelperUser::getInstance('User', 'TiendaHelper'); $details = array('email' => $values['email_address'], 'name' => $values['name'], 'username' => $values['username'], 'password' => $values['password'], 'password2' => $values['password2']); // create the new user $msg = $this->getError(); $user = $userHelper->createNewUser($details, isset($values['guest'])); if (empty($user->id)) { // TODO what to do if creating new user failed? } // save the real user's info in the userinfo table also JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tienda/tables'); $userinfo = JTable::getInstance('UserInfo', 'TiendaTable'); $userinfo->load(array('user_id' => $user->id)); $userinfo->user_id = $user->id; if (isset($values['billing_input_first_name'])) { $userinfo->first_name = $values['billing_input_first_name']; } if (isset($values['billing_input_last_name'])) { $userinfo->last_name = $values['billing_input_last_name']; } if (isset($values['billing_input_company'])) { $userinfo->company = $values['billing_input_company']; } if (isset($values['billing_input_middle_name'])) { $userinfo->middle_name = $values['billing_input_middle_name']; } if (isset($values['billing_input_phone_1'])) { $userinfo->phone_1 = $values['billing_input_phone_1']; } if (isset($values['email_address'])) { $userinfo->email = $values['email_address']; } $userinfo->save(); // login the user $userHelper->login(array('username' => $user->username, 'password' => $details['password'])); return true; } }
/** * Method to set values in the session from the post * @return unknown_type */ function saveStep1() { $post = JRequest::get('post'); // store the values in the session $session = JFactory::getSession(); if ($post['user_type'] != 'existing') { $email = ''; // Create user Tienda::load('TiendaHelperUser', 'helpers.user'); $userHelper = TiendaHelperUser::getInstance('User', 'TiendaHelper'); if ($post['user_type'] == 'new') { $text = JText::_('COM_TIENDA_USERNAME'); $email = $post['new_email']; $username = !empty($post['new_username_create']) ? $email : $post['new_username']; $details = array('email' => $post['new_email'], 'name' => $post['new_name'], 'username' => $username); // create password here? jimport('joomla.user.helper'); $details['password'] = JUserHelper::genRandomPassword(); $details['password2'] = $details['password']; $user = $userHelper->createNewUser($details); } elseif ($post['user_type'] == 'anonymous') { $email = $post['anon_email']; // create a guest email address to be stored in the __users table //get the domain from the uri $uri = JURI::getInstance(); $domain = $uri->gethost(); $guestId = time(); // send the guest user credentials to the user's real email address $details = array('email' => $post['anon_email'], 'name' => "guest_" . $guestId, 'username' => "guest_" . $guestId); // use a random password, and send password2 for the email jimport('joomla.user.helper'); $details['password'] = JUserHelper::genRandomPassword(); $details['password2'] = $details['password']; $user = $userHelper->createNewUser($details, true); // but don't save the user's real email in the __users db table if (Tienda::getInstance()->get('obfuscate_guest_email', '0')) { $lastUserId = $userHelper->getLastUserId(); $guestId = $lastUserId + 1; // format: guest_[id]@domain.com $guest_email = "guest_" . $guestId . "@" . $domain; $userEmailUpdate = $userHelper->updateUserEmail($user->id, $guest_email); } } // save the real user's info in the userinfo table JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_tienda/tables'); $userinfo = JTable::getInstance('UserInfo', 'TiendaTable'); $userinfo->load(array('user_id' => $user->id)); $userinfo->user_id = $user->id; $userinfo->email = $email; $userinfo->save(); // overide the userid in the post $user_id = $user->id; $session->set('user_id', $user->id, 'tienda_pos'); } else { $session->set('user_id', $post['user_id'], 'tienda_pos'); } $session->set('user_type', $post['user_type'], 'tienda_pos'); $session->set('new_email', $post['new_email'], 'tienda_pos'); $session->set('new_name', $post['new_name'], 'tienda_pos'); $session->set('new_username_create', !empty($post['new_username_create']), 'tienda_pos'); $session->set('new_username', $post['new_username'], 'tienda_pos'); $session->set('anon_emails', !empty($post['anon_emails']), 'tienda_pos'); $session->set('anon_email', $post['anon_email'], 'tienda_pos'); $session->set('subtask', 'shipping', 'tienda_pos'); $this->setRedirect("index.php?option=com_tienda&view=pos&nextstep=step2"); }