/** * Adds an item to a User's Product Compare * whether in the session or the db * */ function addProductToCompare() { // saving the session id which will use to update the cart $session = JFactory::getSession(); $userid = JFactory::getUser()->id; // After login, session_id is changed by Joomla, so store this for reference $session->set('old_sessionid', $session->getId()); $response = array(); $response['msg'] = ''; $response['error'] = ''; $product_id = JRequest::getVar('product_id'); $add = JRequest::getVar('add', 1); //deleting product to compare if (!$add) { $db = JFactory::getDBO(); Tienda::load('TiendaQuery', 'library.query'); $query = new TiendaQuery(); $query->delete(); $query->from("#__tienda_productcompare"); $query->where("`product_id` = '{$product_id}' "); $query->where("`session_id` = '" . $session->getId() . "' "); $query->where("`user_id` = '{$userid}'"); $db->setQuery((string) $query); if (!$db->query()) { $response['msg'] = $helper->generateMessage($db->getErrorMsg()); $response['error'] = '1'; return false; } } else { Tienda::load('TiendaHelperProductCompare', 'helpers.productcompare'); $compare_helper = new TiendaHelperProductCompare(); //check limit $compareLimit = $compare_helper->checkLimit(); if (!$compareLimit) { Tienda::load('TiendaHelperBase', 'helpers._base'); $helper = TiendaHelperBase::getInstance(); $limit = Tienda::getInstance()->get('compared_products', '5'); $response['msg'] = $helper->generateMessage(JText::sprintf("COM_TIENDA_ONLY_N_PRODUCTS_CAN_BE_ADDED_TO_COMPARE", $limit)); $response['error'] = '1'; echo json_encode($response); return; } // create cart object out of item properties $item = new JObject(); $item->user_id = $userid; $item->product_id = (int) $product_id; // add the item to the product comparison $compare_item = $compare_helper->addItem($item); } //load user compared items $model = $this->getModel($this->get('suffix')); $model->setState('filter_user', $userid); if (empty($user->id)) { $model->setState('filter_session', $session->getId()); } $items = $model->getList(); //TODO: make it to call a view $response['msg'] .= '<ul>'; foreach ($items as $item) { $table = JTable::getInstance('Products', 'TiendaTable'); $table->load(array('product_id' => $item->product_id)); $response['msg'] .= '<li>'; $response['msg'] .= '<a href="' . JRoute::_('index.php?option=com_tienda&view=products&task=view&id=' . $item->product_id) . '">'; $response['msg'] .= $table->product_name; $response['msg'] .= '</a>'; $response['msg'] .= '</li>'; } $response['msg'] .= '</ul>'; echo json_encode($response); return; }