/** * Processes a new order * * @param $order_id * @return unknown_type */ function processOrder($order_id) { // get the order $model = JModelLegacy::getInstance('Orders', 'CitruscartModel'); $model->setId($order_id); $order = $model->getItem(); if ($order->user_id < Citruscart::getGuestIdStart()) { //load language from frontend so it has email language strings $lang = JFactory::getLanguage(); $lang->load('com_citruscart', JPATH_SITE); $details = array(); $details['name'] = $order->billing_first_name . ' ' . $order->billing_last_name; $details['username'] = $order->userinfo_email; $details['email'] = $order->userinfo_email; jimport('joomla.user.helper'); $details['password'] = JUserHelper::genRandomPassword(); $details['password2'] = $details['password']; $user = CitruscartHelperUser::createNewUser($details); $order->user_id = $user->id; //update the order to the new user $table = $model->getTable(); $table->load($order->order_id); $table->user_id = $user->id; $table->save(); $model->clearCache(); // } // find the products in the order that are integrated foreach ($order->orderitems as $orderitem) { $model = JModelLegacy::getInstance('Products', 'CitruscartModel'); $model->setId($orderitem->product_id); $product = $model->getItem(); $core_user_change_gid = $product->product_parameters->get('core_user_change_gid'); $core_user_new_gid = $product->product_parameters->get('core_user_new_gid'); if (!empty($core_user_change_gid)) { DSCAcl::addgroup($order->user_id, $core_user_new_gid); } } }
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; }