/** * When the user logs in, their session cart should override their db-stored cart. * Current actions take precedence * * @param $user * @param $options * @return unknown_type */ private function doLoginUser($user, $options = array()) { $session = JFactory::getSession(); $old_sessionid = $session->get('old_sessionid'); $user['id'] = intval(JUserHelper::getUserId($user['username'])); // Should check that Citruscart is installed first before executing if (!$this->_isInstalled()) { return; } Citruscart::load('CitruscartHelperCarts', 'helpers.carts'); $helper = new CitruscartHelperCarts(); if (!empty($old_sessionid)) { $helper->mergeSessionCartWithUserCart($old_sessionid, $user['id']); JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_citruscart/models'); $wishlist_model = JModelLegacy::getInstance('WishlistItems', 'CitruscartModel'); $wishlist_model->setUserForSessionItems($old_sessionid, $user['id']); } else { $helper->updateUserCartItemsSessionId($user['id'], $session->getId()); } $this->checkUserGroup(); return true; }
/** * This method occurs after payment is attempted, * and fires the onPostPayment plugin event * * return unknown_type */ function confirmPayment() { $input = JFactory::getApplication()->input; $this->current_step = 3; $orderpayment_type = $input->get('orderpayment_type'); // Get post values $values = $input->getArray($_POST); // get the order_id from the session set by the prePayment $mainframe = JFactory::getApplication(); $order_id = (int) $mainframe->getUserState('citruscart.order_id'); $itemid_string = null; if ($itemid = $this->router->findItemid(array('view' => 'orders'))) { $itemid_string = "&Itemid=" . $itemid; } $order_link = 'index.php?option=com_citruscart&view=orders&task=view&id=' . $order_id . $itemid_string; $pos_order = $mainframe->getUserState('citruscart.pos_order'); $order = $this->_order; $order->load(array('order_id' => $order_id)); //redirect to the backend since we are doing pos order if ($pos_order) { // create POS request record JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_citruscart/tables'); $pos_tbl = JTable::getInstance("PosRequests", "CitruscartTable"); $pos_tbl->order_id = 0; $pos_tbl->user_id = 0; $pos_tbl->mode = 2; // mode 2 => front-end $pos_tbl->data = base64_encode(json_encode($values)); $pos_tbl->save(); // generate pos_id and time $pos_tbl->save(); // save the final token (with pos_id -> that's why we need to save it twice) // build URL for POS $uri = JURI::getInstance(); $uriA = $input->get('get'); $uriA['view'] = 'pos'; $uriA['task'] = 'display'; $uriA['subtask'] = 'confirmPayment'; $uriA['pos_id'] = $pos_tbl->pos_id; $uriA['pos_token'] = $pos_tbl->token; $uriA['order_id'] = $order_id; $uriA['user_id'] = $order->user_id; $uriA['nextstep'] = 'step5'; $uriA['Itemid'] = null; $pos_link = $uri->buildQuery(array_filter($uriA)); $mainframe->redirect(JURI::root() . 'administrator/index.php?' . $pos_link); } $dispatcher = JDispatcher::getInstance(); $html = ""; if (!empty($order->order_hash)) { $order_link .= '&h=' . $order->order_hash; } if (!empty($order_id) && (double) $order->order_total == (double) '0.00') { $order->order_state_id = '17'; // PAYMENT RECEIVED $order->save(); // send notice of new order Citruscart::load("CitruscartHelperBase", 'helpers._base'); $helper = CitruscartHelperBase::getInstance('Email'); $order_model = Citruscart::getClass("CitruscartModelOrders", "models.orders"); $order_model->setId($order_id); $order_model_item = $order_model->getItem(); $helper->sendEmailNotices($order_model_item, 'new_order'); Citruscart::load('CitruscartHelperOrder', 'helpers.order'); CitruscartHelperOrder::setOrderPaymentReceived($order_id); } else { // get the payment results from the payment plugin $results = JFactory::getApplication()->triggerEvent("onPostPayment", array($orderpayment_type, $values)); // Display whatever comes back from Payment Plugin for the onPrePayment for ($i = 0; $i < count($results); $i++) { $html .= $results[$i]; } // re-load the order in case the payment plugin updated it $order->load(array('order_id' => $order_id)); } // $order_id would be empty on posts back from Paypal, for example if (!empty($order_id)) { // Set display if (!$this->onepage_checkout) { $progress = $this->getProgress(); } $view = $this->getView('checkout', 'html'); $view->setLayout('postpayment'); $view->set('_doTask', true); $view->assign('order_link', $order_link); $view->assign('plugin_html', $html); if (!$this->onepage_checkout) { $view->assign('progress', $progress); } // Get and Set Model $model = $this->getModel('checkout'); $view->setModel($model, true); // get the articles to display after checkout $articles = array(); $article_id = $this->defines->get('article_checkout'); if (!empty($article_id)) { Citruscart::load('CitruscartArticle', 'library.article'); $articles[] = CitruscartArticle::display($article_id); } switch ($order->order_state_id) { case "2": case "3": case "5": case "17": $articles = array_merge($articles, $this->getOrderArticles($order_id)); // Inject <head> code if ($orders_confirmation_header_code = $this->defines->get('orders_confirmation_header_code')) { Citruscart::load('CitruscartHelperHead', 'helpers.head'); $head_helper = new CitruscartHelperHead(); if ($string_to_inject = $head_helper->processStringForOrder($order_id, $orders_confirmation_header_code)) { $head_helper->injectIntoHead($string_to_inject); } } break; case "7": case "8": case "9": case "10": case "14": $article_id = $this->defines->get('article_default_payment_failure'); Citruscart::load('CitruscartArticle', 'library.article'); $articles = array(CitruscartArticle::display($article_id)); break; } $view->assign('articles', $articles); ob_start(); JFactory::getApplication()->triggerEvent('onBeforeDisplayPostPayment', array($order_id)); $view->assign('onBeforeDisplayPostPayment', ob_get_contents()); ob_end_clean(); ob_start(); JFactory::getApplication()->triggerEvent('onAfterDisplayPostPayment', array($order_id)); $view->assign('onAfterDisplayPostPayment', ob_get_contents()); ob_end_clean(); $view->display(); } // set up user_id for cart items for guest account if ($order->user_id < Citruscart::getGuestIdStart()) { Citruscart::load('CitruscartHelperCarts', 'helpers.cart'); $session = JFactory::getSession(); $helper = new CitruscartHelperCarts(); $helper->mergeSessionCartWithUserCart($session->getId(), $order->user_id); } return; }