/** * Displays a product category * * (non-PHPdoc) * @see Citruscart/admin/CitruscartController#display($cachable) */ function display($cachable = false, $urlparams = false) { $input = JFactory::getApplication()->input; $input->set('view', $this->get('suffix')); $input->set('search', false); $view = $this->getView($this->get('suffix'), JFactory::getDocument()->getType()); $model = $this->getModel($this->get('suffix')); $state = $this->_setModelState(); $session = JFactory::getSession(); $app = JFactory::getApplication(); $ns = $app->getName() . '::' . 'com.citruscart.products.state.' . $this->itemid; $session->set($ns, $state); $app = JFactory::getApplication(); $ns_general = $app->getName() . '::' . 'com.citruscart.products.state'; $session->set($ns_general, $state); // get the category we're looking at $filter_category = $model->getState('filter_category', $input->getString('filter_category')); JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_citruscart/models'); $cmodel = JModelLegacy::getInstance('Categories', 'CitruscartModel'); $cat = $cmodel->getTable(); $cat->load($filter_category); // set the title based on the selected category $title = empty($cat->category_name) ? JText::_('COM_CITRUSCART_ALL_CATEGORIES') : JText::_($cat->category_name); $level = !empty($filter_category) ? $filter_category : '1'; // breadcrumb support $app = JFactory::getApplication(); $pathway = $app->getPathway(); // does this item have its own itemid? if so, let joomla handle the breadcrumb, // otherwise, help it out a little bit $category_itemid = $this->router->category($filter_category, true); if (!$category_itemid) { $category_itemid = $input->getInt('Itemid'); $items = Citruscart::getClass("CitruscartHelperCategory", 'helpers.category')->getPathName($filter_category, 'array'); if (!empty($items)) { // add the categories to the pathway Citruscart::getClass("CitruscartHelperPathway", 'helpers.pathway')->insertCategories($items, $category_itemid); } // add the item being viewed to the pathway $pathway_values = $pathway->getPathway(); $pathway_names = Citruscart::getClass("CitruscartHelperBase", 'helpers._base')->getColumn($pathway_values, 'name'); $pathway_links = Citruscart::getClass("CitruscartHelperBase", 'helpers._base')->getColumn($pathway_values, 'link'); $cat_url = "index.php?Itemid={$category_itemid}"; if (!in_array($cat->category_name, $pathway_names)) { $pathway->addItem($title); } } $cat->itemid = $category_itemid; // get the category's sub categories $cmodel->setState('filter_level', $level); $cmodel->setState('filter_enabled', '1'); $cmodel->setState('order', 'tbl.lft'); $cmodel->setState('direction', 'ASC'); if ($citems = $cmodel->getList()) { foreach ($citems as $item) { $item->itemid_string = null; $item->itemid = Citruscart::getClass("CitruscartHelperRoute", 'helpers.route')->category($item->category_id, true); if (!empty($item->itemid)) { $item->itemid_string = "&Itemid=" . $item->itemid; } } } $this->_list = true; // if you want to display a slightly differen add-to-cart area for list view, check this boolean // get the products to be displayed in this category if ($items = $model->getList()) { $input->set('page', 'category'); // for "getCartButton" $this->display_cartbutton = Citruscart::getInstance()->get('display_category_cartbuttons', '1'); foreach ($items as $item) { $item->itemid_string = null; $item->itemid = (int) Citruscart::getClass("CitruscartHelperRoute", 'helpers.route')->product($item->product_id, null, true); if (!empty($item->itemid)) { $item->itemid_string = "&Itemid=" . $item->itemid; } } } if ($model->getState('filter_price_from') > '0' || $model->getState('filter_price_to') > '0') { $url = "index.php?option=com_citruscart&view=products&filter_category={$filter_category}&filter_price_from=&filter_price_to="; $from = CitruscartHelperBase::currency($model->getState('filter_price_from')); $to = $model->getState('filter_price_to') > 0 ? CitruscartHelperBase::currency($model->getState('filter_price_to')) : JText::_('COM_CITRUSCART_MAXIMUM_PRICE'); $view->assign('remove_pricefilter_url', $url); $view->assign('pricefilter_applied', true); $view->assign('filterprice_from', $from); $view->assign('filterprice_to', $to); } if (Citruscart::getInstance()->get('enable_product_compare', '1')) { Citruscart::load("CitruscartHelperProductCompare", 'helpers.productcompare'); $compareitems = CitruscartHelperProductCompare::getComparedProducts(); $view->assign('compareitems', $compareitems); } $view->assign('level', $level); $view->assign('title', $title); $view->assign('cat', $cat); $view->assign('citems', $citems); $view->assign('items', $items); $view->set('_doTask', true); $view->setModel($model, true); // add the media/templates folder as a valid path for templates $view->addTemplatePath(Citruscart::getPath('categories_templates')); // but add back the template overrides folder to give it priority $template_overrides = JPATH_BASE . '/templates/' . $app->getTemplate() . '/html/com_citruscart/' . $view->getName(); $view->addTemplatePath($template_overrides); // using a helper file, we determine the category's layout $layout = Citruscart::getClass('CitruscartHelperCategory', 'helpers.category')->getLayout($cat->category_id); $view->setLayout($layout); $view->display(); $this->footer(); return; }
/** * Adds an item to a User's Product Compare * whether in the session or the db * */ function addProductToCompare() { $input = JFactory::getApplication()->input; // 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 = $input->getInt('product_id'); $add = $input->getInt('add', 1); //deleting product to compare if (!$add) { $db = JFactory::getDBO(); Citruscart::load('CitruscartQuery', 'library.query'); $query = new CitruscartQuery(); $query->delete(); $query->from("#__citruscart_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 { Citruscart::load('CitruscartHelperProductCompare', 'helpers.productcompare'); $compare_helper = new CitruscartHelperProductCompare(); //check limit $compareLimit = $compare_helper->checkLimit(); if (!$compareLimit) { Citruscart::load('CitruscartHelperBase', 'helpers._base'); $helper = CitruscartHelperBase::getInstance(); $limit = Citruscart::getInstance()->get('compared_products', '5'); $response['msg'] = $helper->generateMessage(JText::sprintf("COM_CITRUSCART_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', 'CitruscartTable'); $table->load(array('product_id' => $item->product_id)); $response['msg'] .= '<li>'; $response['msg'] .= '<a href="' . JRoute::_('index.php?option=com_citruscart&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; }