public static function getItemTable($product_id, $lang_id, $full = false) { if (!JeproshopProductPack::isFeaturePublished()) { return array(); } $db = JFactory::getDBO(); $query = "SELECT product.*, product_shop.*, product_lang.*, MAX(image_shop." . $db->quoteName('image_id') . ") image_id, image_lang." . $db->quoteName('legend'); $query .= ", category_lang." . $db->quoteName('name') . " AS default_category, pack.quantity AS pack_quantity, product_shop." . $db->quoteName('default_category_id'); $query .= ", pack.product_pack_id FROM " . $db->quoteName('#__jeproshop_pack') . " AS pack LEFT JOIN " . $db->quoteName('#__jeproshop_product') . " AS product ON("; $query .= "product.product_id = pack.product_item_id) LEFT JOIN " . $db->quoteName('#__jeproshop_product_lang') . " AS product_lang ON(product.product_id = product_lang."; $query .= "product_id AND product_lang.lang_id = " . (int) $lang_id . JeproshopShopModelShop::addSqlRestrictionOnLang('product_lang') . ") LEFT JOIN "; $query .= $db->quoteName('#__jeproshop_image') . " AS image ON( image.product_id = product.product_id )" . JeproshopShopModelShop::addSqlAssociation('product', FALSE, 'image_shop.cover = 1'); $query .= " LEFT JOIN " . $db->quoteName('#__jeproshop_image_lang') . " AS image_lang ON (image.image_id = image_lang.image_id AND image_lang.lang_id = " . (int) $lang_id . " ) "; $query .= JeproshopShopModelShop::addSqlAssociation('product') . " LEFT JOIN " . $db->quoteName('#__jeproshop_category_lang') . " AS category_lang ON product_shop."; $query .= $db->quoteName('default_category_id') . " = category_lang." . $db->quoteName('category_id') . " AND category_lang." . $db->quoteName('lang_id') . " = " . (int) $lang_id; $query .= JeproshopShopModelShop::addSqlRestrictionOnLang('category_lang') . " WHERE product_shop." . $db->quoteName('shop_id') . " = " . (int) JeproshopContext::getContext()->shop->shop_id; $query .= " AND pack." . $db->quoteName('product_pack_id') . " = " . (int) $product_id . " GROUP BY product_shop.product_id"; $db->setQuery($query); $result = $db->loadObjectList(); foreach ($result as &$line) { $line = JeproshopProductModelProduct::getTaxesInformations($line); } if (!$full) { return $result; } $array_result = array(); foreach ($result as $prow) { if (!JeproshopProductPack::isPack($prow->product_id)) { $array_result[] = JeproshopProductModelProduct::getProductProperties($lang_id, $prow); } } return $array_result; }
public static function getPacksTable($product_id, $lang_id, $full = false, $limit = null) { if (!JeproshopProductPack::isFeaturePublished()) { return array(); } $db = JFactory::getDBO(); $query = "SELECT GROUP_CONCAT(pack." . $db->quoteName('product_pack_id') . ") FROM " . $db->quoteName('#__jeproshop_pack') . " AS pack WHERE pack." . $db->qsuoteName('product_item_id') . " = " . (int) $product_id; $db->quoteName($query); $packs = $db->loadResult(); if (!(int) $packs) { return array(); } $query = "SELECT product.*, product_shop.*, product_lang.*, MAX(image_shop." . $db->quoteName('image_id') . ") image_id, image_lang." . $db->quoteName('legend') . " FROM " . $db->quoteName('#__jeproshop_product') . " AS product NATURAL LEFT JOIN "; $query .= $db->quoteName('#__jeproshop_product_lang') . " AS product_lang " . JeproshopShopModelShop::addSqlAssociation('product') . " LEFT JOIN " . $db->quoteName('#__jeproshop_image') . " AS image ON (image." . $db->quoteName('product_id') . " = product."; $query .= $db->quoteName('product_id') . ") " . JeproshopShopModelShop::addSqlAssociation('image', false, 'image_shop.cover=1') . "\tLEFT JOIN " . $db->quoteName('#__jeproshop_image_lang') . " AS image_lang ON (image." . $db->quoteName('image_id'); $query .= " = image_lang." . $db->quoteName('image_id') . " AND image_lang." . $db->quoteName('lang_id') . " = " . (int) $lang_id . ") WHERE product_lang." . $db->quoteName('lang_id') . " = " . (int) $lang_id . JeproshopShopModelShop::addSqlRestrictionOnLang('product_lang'); $query .= "\tAND product." . $db->quoteName('product_id') . " IN (" . $packs . ") GROUP BY product_shop.product_id"; if ($limit) { $query .= " LIMIT " . (int) $limit; } $db->setQuery($query); $result = $db->loadObjectList(); if (!$full) { return $result; } $array_result = array(); foreach ($result as $row) { if (!JeproshopProductPack::isPacked($row->product_id)) { $array_result[] = JeproshopProductModelProduct::getProductProperties($lang_id, $row); } } return $array_result; }