public static function getValueForProduct($product_id, $group_id) { if (!JeproshopGroupModelGroup::isFeaturePublished()) { return 0; } if (!isset(self::$reduction_cache[$product_id . '_' . $group_id])) { $db = JFactory::getDBO(); $query = "SELECT " . $db->quoteName('reduction') . " FROM " . $db->quoteName('#__jeproshop_product_group_reduction_cache') . " WHERE "; $query .= $db->quoteName('product_id') . " = " . (int) $product_id . " AND " . $db->quoteName('group_id') . " = " . (int) $group_id; $db->setQuery($query); self::$reduction_cache[$product_id . '_' . $group_id] = $db->loadResult(); } // Should return string (decimal in database) and not a float return self::$reduction_cache[$product_id . '_' . $group_id]; }
$context->currency = new JeproshopCurrencyModelCurrency($currency_id); if (isset($context->cookie->customer_id) && (int) $context->customer_id) { $customer = new JeproshopCustomerModelCustomer($context->cookie->customer_id); if (!JeproshopTools::isLoadedObject($customer)) { $context->cookie->logout(); } else { $customer->logged = TRUE; if ($customer->lang_id != $context->language->lang_id) { $customer->lang_id = $context->language->lang_id; $customer->update(); } } } if (!isset($customer) || !JeproshopTools::isLoadedObject($customer)) { $customer = new JeproshopCustomerModelCustomer(); if (JeproshopGroupModelGroup::isFeaturePublished()) { $customer->default_group_id = (int) JeproshopSettingModelSetting::getValue('unidentified_group'); } } $customer->guest_id = $context->cookie->guest_id; $context->customer = $customer; /** controller and redirection */ $controller = JFactory::getApplication()->input->get('view'); if ($controller) { if (file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'controllers' . DIRECTORY_SEPARATOR . $controller . '.php')) { require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'controller.php'; require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'controllers' . DIRECTORY_SEPARATOR . $controller . '.php'; } else { $controller = ''; } $context->controller = JControllerLegacy::getInstance('Jeproshop' . $controller);
/** * Return current category childs * * @param integer $lang_id Language ID * @param boolean $published return only active categories * @return array Categories */ public function getSubCategories($lang_id, $published = true) { $sql_groups_where = ''; $sql_groups_join = ''; $db = JFactory::getDBO(); if (JeproshopGroupModelGroup::isFeaturePublished()) { $sql_groups_join = " LEFT JOIN " . $db->quoteName('#__jeproshop_category_group') . " AS category_group ON (category_group." . $db->quoteName('category_id') . " = category." . $db->quoteName('category_id') . ")"; $groups = JeproshopController::getCurrentCustomerGroups(); $sql_groups_where = " AND category_group." . $db->quoteName('group_id') . " " . (count($groups) ? " IN (" . implode(',', $groups) . ")" : " = " . (int) JeproshopGroupModelGroup::getCurrent()->group_id); } $query = "SELECT category.*, category_lang.lang_id, category_lang.name, category_lang.description, category_lang.link_rewrite, category_lang.meta_title, category_lang.meta_keywords, "; $query .= " category_lang.meta_description FROM " . $db->quoteName('#__jeproshop_category') . " AS category " . JeproshopShopModelShop::addSqlAssociation('category') . " LEFT JOIN "; $query .= $db->quoteName('#__jeproshop_category_lang') . " AS category_lang ON (category." . $db->quoteName('category_id') . " = category_lang." . $db->quoteName('category_id'); $query .= " AND " . $db->quoteName('lang_id') . " = " . (int) $lang_id . " " . JeproshopShopModelShop::addSqlRestrictionOnLang('category_lang') . ") " . $sql_groups_join; $query .= " WHERE " . $db->quoteName('parent_id') . " = " . (int) $this->category_id . ($published ? " AND " . $db->quoteName('published') . " = 1 " : "") . $sql_groups_where; $query .= "\tGROUP BY category." . $db->quoteName('category_id') . " ORDER BY " . $db->quoteName('depth_level') . " ASC, category_shop." . $db->quoteName('position') . " ASC"; $db->setQuery($query); $result = $db->loadObjectList(); foreach ($result as &$row) { $row->image_id = JeproshopTools::file_exists_cache(COM_JEPROSHOP_CATEGORY_IMAGE_DIRECTORY . $row->category_id . '.jpg') ? (int) $row->category_id : JeproshopLanguageModelLanguage::getIsoById($lang_id) . '_default'; $row->legend = JText::_('COM_JEPROSHOP_NO_PICTURE_LABEL'); } return $result; }
/** * Return manufacturers * * @param boolean $get_nb_products [optional] return products numbers for each * @param int $lang_id * @param bool $published * @param int $p * @param int $n * @param bool $all_group * @return array Manufacturers */ public static function getManufacturers($get_nb_products = false, $lang_id = 0, $published = true, $p = false, $n = false, $all_group = false, $group_by = false) { if (!$lang_id) { $lang_id = (int) JeproshopSettingModelSetting::getValue('default_lang'); } if (!JeproshopGroupModelGroup::isFeaturePublished()) { $all_group = true; } $db = JFactory::getDBO(); $query = "SELECT manufacturer.*, manufacturer_lang." . $db->quoteName('description') . ", manufacturer_lang."; $query .= $db->quoteName('short_description') . " FROM " . $db->quoteName('#__jeproshop_manufacturer') . " AS "; $query .= "manufacturer " . JeproshopShopModelShop::addSqlAssociation('manufacturer') . " INNER JOIN "; $query .= $db->quoteName('#__jeproshop_manufacturer_lang') . " AS manufacturer_lang ON (manufacturer."; $query .= $db->quoteName('manufacturer_id') . " = manufacturer_lang." . $db->quoteName('manufacturer_id'); $query .= " AND manufacturer_lang." . $db->quoteName('lang_id') . " = " . (int) $lang_id . ")"; $query .= $published ? " WHERE manufacturer." . $db->quoteName('published') . " = 1" : ""; $query .= ($group_by ? " GROUP BY manufacturer." . $db->quoteName('manufacturer_id') : "") . " ORDER BY "; $query .= "manufacturer." . $db->quoteName('name') . " ASC " . ($p ? " LIMIT " . ((int) $p - 1) * (int) $n . ", " . (int) $n : ""); $db->setQuery($query); $manufacturers = $db->loadObjectList(); if ($manufacturers === false) { return false; } /* if ($get_nb_products) { $sql_groups = ''; if (!$all_group) { $groups = FrontController::getCurrentCustomerGroups(); $sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); } foreach ($manufacturers as $key => $manufacturer) { $manufacturers[$key]['nb_products'] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' SELECT COUNT(DISTINCT p.`id_product`) FROM `'._DB_PREFIX_.'product` p '.Shop::addSqlAssociation('product', 'p').' WHERE p.`id_manufacturer` = '.(int)$manufacturer['id_manufacturer'].' AND product_shop.`visibility` NOT IN ("none") '.($active ? ' AND product_shop.`active` = 1 ' : '').' '.($all_group ? '' : ' AND p.`id_product` IN ( SELECT cp.`id_product` FROM `'._DB_PREFIX_.'category_group` cg LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) WHERE cg.`id_group` '.$sql_groups.' )')); } } */ $total_manufacturers = count($manufacturers); $rewrite_settings = (int) JeproshopSettingModelSetting::getValue('rewrite_settings'); for ($i = 0; $i < $total_manufacturers; $i++) { $manufacturers[$i]->link_rewrite = $rewrite_settings ? JeproshopValidator::link_rewrite($manufacturers[$i]->name) : 0; } return $manufacturers; }
public function checkAccess($customer_id) { if (!JeproshopGroupModelGroup::isFeaturePublished()) { return true; } $cache_id = 'jeproshop_product_check_access_' . (int) $this->product_id . '_' . (int) $customer_id . (!$customer_id ? '_' . (int) JeproshopGroupModelGroup::getCurrent()->group_id : ''); if (!JeproshopCache::isStored($cache_id)) { $db = JFactory::getDBO(); if (!$customer_id) { $query = "SELECT category_group." . $db->quoteName('group_id') . " FROM " . $db->quoteName('#__jeproshop_product_category'); $query .= " AS product_category INNER JOIN " . $db->quoteName('#__jeproshop_category_group') . " AS category_group ON (category_group."; $query .= $db->quoteName('category_id') . " = product_category." . $db->quoteName('category_id') . ") WHERE product_category."; $query .= $db->quoteName('product_id') . " = " . (int) $this->product_id . " AND category_group." . $db->quoteName('group_id') . " = "; $query .= (int) JeproshopGroupModelGroup::getCurrent()->group_id; } else { $query = "SELECT customer_group." . $db->quoteName('group_id') . " FROM " . $db->quoteName('#__jeproshop_product_category'); $query .= " AS product_category INNER JOIN " . $db->quoteName('#__jeproshop_category_group') . " AS category_group ON (category_group."; $query .= $db->quoteName('category_id') . " = product_category." . $db->quoteName('category_id') . ") INNER JOIN "; $query .= $db->quoteName('#__jeproshop_customer_group') . " AS customer_group ON (customer_group." . $db->quoteName('group_id'); $query .= " = category_group." . $db->quoteName('group_id') . ") WHERE product_category." . $db->quoteName('product_id') . " = "; $query .= (int) $this->product_id . " AND customer_group." . $db->quoteName('customer_id') . " = " . (int) $customer_id; } $db->setQuery($query); $result = $db->loadResult(); JeproshopCache::store($cache_id, $result); } return JeproshopCache::retrieve($cache_id); }
public static function searchTag($id_lang, $tag, $count = false, $pageNumber = 0, $pageSize = 10, $orderBy = false, $orderWay = false, $useCookie = true, JeproshopContext $context = null) { if (!$context) { $context = JeproshopContext::getContext(); } // Only use cookie if id_customer is not present if ($useCookie) { $customer_id = (int) $context->customer->customer_id; } else { $customer_id = 0; } if (!is_numeric($pageNumber) || !is_numeric($pageSize) || !Validate::isBool($count) || !Validate::isValidSearch($tag) || $orderBy && !$orderWay || $orderBy && !Validate::isOrderBy($orderBy) || $orderWay && !Validate::isOrderBy($orderWay)) { return false; } if ($pageNumber < 1) { $pageNumber = 1; } if ($pageSize < 1) { $pageSize = 10; } $shop_id = JeproshopContext::getContext()->shop->shop_id; $shop_id = $shop_id ? $shop_id : JeproshopSettingModelSetting::getValue('default_shop'); $sql_groups = ''; if (JeproshopGroupModelGroup::isFeaturePublished()) { $groups = JeproshopController::getCurrentCustomerGroups(); $sql_groups = " AND customer_group." . $db->quoteName('group_id') . (count($groups) ? " IN (" . implode(',', $groups) . ")" : "= 1"); } if ($count) { $query = "SELECT COUNT(DISTINCT product_tag." . $db->quoteName('product_id') . ") nb FROM " . $db->quoteName('#__jeproshop_product'); $query .= " AS product " . JeproshopShopModelShop::addSqlAssociation('product') . "\tLEFT JOIN " . $db->quoteName('#__jeproshop_product_tag'); $query .= " AS product_tag ON (product." . $db->quoteName('product_id') . " = product_tag." . $db->quoteName('product_id') . ") LEFT JOIN "; $query .= $db->quoteName('#__jeproshop_tag') . " AS tag ON (product_tag." . $db->quoteName('tag_id') . " = tag." . $db->quoteName('tag_id'); $query .= " AND tag." . $db->quoteName('lang_id') . " = " . (int) $lang_id . ") LEFT JOIN " . $db->quoteName('#__jeproshop_product_category'); $query .= " AS product_category ON (product_category." . $db->quoteName('product_id') . " = product." . $db->quoteName('product_id') . ") LEFT JOIN "; $query .= $db->quoteName('#__jeproshop_category_shop') . " AS category_shop ON (product_category." . $db->quoteName('category_id') . " = category_shop."; $query .= $db->quoteName('category_id') . " AND category_shop." . $db->quoteName('shop_id') . " = " . (int) $shop_id . ") "; $query .= JeproshopGroupModelGroup::isFeaturePublished() ? " LEFT JOIN " . $db->quoteName('#__jeproshop_category_group') . " AS category_group ON (category_group." . $db->quoteName('category_id') . " = product_category." . $db->quoteName('category_id') . ")" : ""; $query .= "\tWHERE product_shop." . $db->quoteName('publishd') . " = 1 AND product.visibility IN ('both', 'search') AND category_shop." . $db->quoteName('shop_id'); $query .= " = " . (int) JeproshopContext::getContext()->shop->shop_id . $sql_groups . " AND tag." . $db->quoteName('name') . " LIKE '%'" . $db->quote($tag) . "'%')"; /*$query .= " } $sql = 'SELECT DISTINCT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, pl.`description_short`, pl.`link_rewrite`, pl.`name`, MAX(image_shop.`id_image`) id_image, il.`legend`, m.`name` manufacturer_name, 1 position, DATEDIFF( p.`date_add`, DATE_SUB( NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY ) ) > 0 new FROM `' $db->quoteName('#__jeproshop_product` p INNER JOIN `'.$db->quoteName('#__jeproshop_product_lang` pl ON ( p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').' )'.Shop::addSqlAssociation('product', 'p', false).' LEFT JOIN `'.$db->quoteName('#__jeproshop_image` i ON (i.`id_product` = p.`id_product`)'. Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1').' LEFT JOIN `' . $db->quoteName('#__jeproshop_image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'. $db->quoteName('#__jeproshop_manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`) LEFT JOIN `'. $db->quoteName('#__jeproshop_product_tag` pt ON (p.`id_product` = pt.`id_product`) LEFT JOIN `'. $db->quoteName('#__jeproshop_tag` t ON (pt.`id_tag` = t.`id_tag` AND t.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'. $db->quoteName('#__jeproshop_category_product` cp ON (cp.`id_product` = p.`id_product`) '.(Group::isFeatureActive() ? 'LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = cp.`id_category`)' : '').' LEFT JOIN `'. $db->quoteName('#__jeproshop_category_shop` cs ON (cp.`id_category` = cs.`id_category` AND cs.`id_shop` = '.(int)$id_shop.') '.Product::sqlStock('p', 0).' WHERE product_shop.`active` = 1 AND cs.`id_shop` = '.(int)Context::getContext()->shop->id.' '.$sql_groups.' AND t.`name` LIKE \'%'.pSQL($tag).'%\' return (int)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue( GROUP BY product_shop.id_product ORDER BY position DESC'.($orderBy ? ', '.$orderBy : '').($orderWay ? ' '.$orderWay : '').' LIMIT '.(int)(($pageNumber - 1) * $pageSize).','.(int)$pageSize; $db->setQuery($query); $result = $db->loadObjectList(); if (!$result) return false; */ } return JeproshopProductModelProduct::getProductsProperties((int) $lang_id, $result); }
public static function getNestedCategories($root_category = null, $lang_id = false, $published = true, $groups = null, $use_shop_restriction = true, $sql_filter = '', $sql_sort = '', $sql_limit = '') { $db = JFactory::getDBO(); if (isset($root_category) && !JeproshopTools::isInt($root_category)) { die(Tools::displayError()); } if (!JeproshopTools::isBool($published)) { die(Tools::displayError()); } if (isset($groups) && JeproshopGroupModelGroup::isFeaturePublished() && !is_array($groups)) { $groups = (array) $groups; } $cache_id = 'Category::getNestedCategories_' . md5((int) $root_category . (int) $lang_id . '_' . (int) $published . '_' . (int) $published . (isset($groups) && JeproshopGroupModelGroup::isFeaturePublished() ? implode('', $groups) : '')); if (!JeproshopCache::isStored($cache_id)) { $query = "SELECT category.*, category_lang.* FROM " . $db->quoteName('#__jeproshop_category') . " AS category "; $query .= ($use_shop_restriction ? JeproshopShopModelShop::addSqlAssociation('category') : "") . " LEFT JOIN "; $query .= $db->quoteName('#__jeproshop_category_lang') . " AS category_lang ON category." . $db->quoteName('category_id'); $query .= " = category_lang." . $db->quoteName('category_id') . JeproshopShopModelShop::addSqlRestrictionOnLang('category_lang'); $selector = " LEFT JOIN " . $db->quoteName('#__jeproshop_category_group') . " AS category_group ON category."; $selector .= $db->quoteName('category_id') . " = category_group." . $db->quoteName('category_id'); $query .= isset($groups) && JeproshopGroupModelGroup::isFeaturePublished() ? $selector : ""; $selector = " RIGHT JOIN " . $db->quoteName('#__jeproshop_category') . " AS category_2 ON category_2." . $db->quoteName('category_id'); $selector .= " = " . (int) $root_category . " AND category." . $db->quoteName('n_left') . " >= category_2." . $db->quoteName('n_left'); $selector .= " AND category." . $db->quoteName('n_right') . " <= category_2." . $db->quoteName('n_right'); $query .= (isset($root_category) ? $selector : "") . " WHERE 1 " . $sql_filter . ($lang_id ? " AND " . $db->quoteName('lang_id') . " = " . (int) $lang_id : ""); $query .= $published ? " AND category." . $db->quoteName('published') . " = 1" : ""; $query .= isset($groups) && JeproshopGroupModelGroup::isFeaturePublished() ? " AND category_group." . $db->quoteName('group_id') . " IN (" . implode(',', $groups) . ") " : ""; $selector = " GROUP BY category." . $db->quoteName('category_id'); $query .= !$lang_id || isset($groups) && JeproshopGroupModelGroup::isFeaturePublished() ? $selector : ""; $query .= $sql_sort != "" ? $sql_sort : " ORDER BY category." . $db->quoteName('depth_level') . " ASC"; $query .= $sql_sort == "" && $use_shop_restriction ? ", category_shop." . $db->quoteName('position') . " ASC" : ""; $query .= $sql_limit != "" ? $sql_limit : ""; $db->setQuery($query); $result = $db->loadObjectList(); $categories = array(); $buff = array(); if (!isset($root_category)) { $root_category = JeproshopCategoryModelCategory::getRootCategory()->category_id; } foreach ($result as $row) { $current =& $buff[$row->category_id]; $current = $row; if ($row->category_id == $root_category) { $categories[$row->category_id] =& $current; } else { $buff[$row->parent_id]->children[$row->category_id] =& $current; } } JeproshopCache::store($cache_id, $categories); } return JeproshopCache::retrieve($cache_id); }
/** * @static * @param JeproshopContext|null $context * @return mixed */ public static function autoAddToCart(JeproshopContext $context = null) { if ($context === null) { $context = JeproshopContext::getContext(); } if (!JeproshopCartRuleModelCartRule::isFeaturePublished() || !JeproshopValidator::isLoadedObject($context->cart, 'cart_id')) { return; } $db = JFactory::getDBO(); $query = "SELECT cart_rule.* FROM " . $db->quoteName('#__jeproshop_cart_rule') . " AS cart_rule LEFT JOIN " . $db->quoteName('#__jeproshop_cart_rule_shop'); $query .= " AS cart_rule_shop ON cart_rule.cart_rule_id = cart_rule_shop.cart_rule_id "; $group_query = " LEFT JOIN " . $db->quoteName('#__jeproshop_cart_rule_group') . " AS cart_rule_group ON cart_rule.cart_rule_id = cart_rule_group.cart_rule_id "; $query .= (!$context->customer->customer_id && JeproshopGroupModelGroup::isFeaturePublished() ? $group_query : "") . " LEFT JOIN "; $query .= $db->quoteName('#__jeproshop_cart_rule_carrier') . " AS cart_rule_carrier ON cart_rule.cart_rule_id = cart_rule_carrier.cart_rule_id "; $query .= $context->cart->carrier_id ? " LEFT JOIN " . $db->quoteName('#__jeproshop_carrier') . " AS carrier ON (carrier.reference_id = cart_rule_carrier.carrier_id AND carrier.deleted = 0)" : ""; $query .= " LEFT JOIN " . $db->quoteName('#__jeproshop_cart_rule_country') . " AS cart_rule_country ON cart_rule.cart_rule_id = cart_rule_country."; $query .= "cart_rule_id WHERE cart_rule.published = 1 AND cart_rule.code = '' AND cart_rule.quantity > 0 AND cart_rule.date_from < '" . date('Y-m-d H:i:s') . "'\tAND cart_rule.date_to > '"; $query .= date('Y-m-d H:i:s') . "' AND ( cart_rule.customer_id = 0 " . ($context->customer->customer_id ? " OR cart_rule.customer_id = " . (int) $context->cart->customer_id : ""); $query .= ") AND ( cart_rule." . $db->quoteName('carrier_restriction') . " = 0 " . ($context->cart->carrier_id ? " OR carrier.carrier_id = " . (int) $context->cart->carrier_id : ""); $query .= " ) AND ( cart_rule." . $db->quoteName('shop_restriction') . " = 0 " . (JeproshopShopModelShop::isFeaturePublished() && $context->shop->shop_id ? " OR cart_rule_shop.shop_id = " . (int) $context->shop->shop_id : ""); $query .= " ) AND ( cart_rule." . $db->quoteName('group_restriction') . " = 0 "; if ($context->customer->customer_id) { $query = " OR 0 < ( SELECT customer_group." . $db->quoteName('group_id') . " FROM " . $db->quoteName('#__jeproshop_customer_group') . " AS customer_group INNER JOIN " . $db->quoteName('#__jeproshop_cart_rule_group'); $query .= " AS cart_rule_group ON customer_group.group_id = cart_rule_group.group_id WHERE cart_rule." . $db->quoteName('cart_rule_id') . " = cart_rule_group." . $db->quoteName('cart_rule_id') . " AND customer_group."; $query .= $db->quoteName('customer_id') . " = " . (int) $context->customer->customer_id . " LIMIT 1\t)"; } else { if (JeproshopGroupModelGroup::isFeaturePublished()) { $query .= " OR cart_rule_group." . $db->quoteName('group_id') . " = " . (int) JeproshopSettingModelSetting::getValue('unidentified_group'); } } $query .= " ) AND ( cart_rule." . $db->quoteName('`reduction_product') . " <= 0 OR cart_rule." . $db->quoteName('reduction_product') . " IN ( SELECT " . $db->quoteName('product_id') . " FROM "; $query .= $db->quoteName('#__jeproshop_cart_product') . " WHERE " . $db->quoteName('cart_id') . " = " . (int) $context->cart->cart_id . " ) ) AND cart_rule.cart_rule_id NOT IN (SELECT cart_rule_id FROM "; $query .= $db->quoteName('#__jeproshop_cart_cart_rule') . " WHERE car_id = " . (int) $context->cart->cart_id . ") ORDER BY priority"; $db->setQuery($query); $result = $db->loadObjectList(); if ($result) { $cart_rules = ObjectModel::hydrateCollection('CartRule', $result); if ($cart_rules) { foreach ($cart_rules as $cart_rule) { if ($cart_rule->checkValidity($context, false, false)) { $context->cart->addCartRule($cart_rule->cart_rule_id); } } } } }
/** * Return suppliers * * @param bool $get_nb_products * @param int $lang_id * @param bool $published * @param bool $p * @param bool $n * @param bool $all_groups * @return array Suppliers */ public static function getSuppliers($get_nb_products = false, $lang_id = 0, $published = true, $p = false, $n = false, $all_groups = false) { if (!$lang_id) { $lang_id = JeproshopSettingModelSetting::getValue('default_lang'); } if (!JeproshopGroupModelGroup::isFeaturePublished()) { $all_groups = true; } $db = JFactory::getDBO(); $query = "SELECT supplier.*, supplier_lang." . $db->quoteName('description') . " FROM " . $db->quoteName('#__jeproshop_supplier'); $query .= " AS supplier LEFT JOIN " . $db->quoteName('#__jeproshop_supplier_lang') . " AS supplier_lang ON(supplier."; $query .= $db->quoteName('supplier_id') . " = supplier_lang." . $db->quoteName('supplier_id') . " AND supplier_lang."; $query .= $db->quoteName('lang_id') . " = " . (int) $lang_id . JeproshopShopModelShop::addSqlAssociation('supplier') . ")"; $query .= ($published ? " WHERE supplier." . $db->quoteName('published') . " = 1" : "") . " ORDER BY supplier."; $query .= $db->quoteName('name') . " ASC " . ($p && $n ? " LIMIT " . $n . ", " . ($p - 1) * $n : ""); //. " GROUP BY supplier" . $db->quoteName('supplier_id'); $db->setQuery($query); $suppliers = $db->loadObjectList(); if ($suppliers === false) { return false; } if ($get_nb_products) { $sql_groups = ''; if (!$all_groups) { $groups = FrontController::getCurrentCustomerGroups(); $sql_groups = count($groups) ? 'IN (' . implode(',', $groups) . ')' : '= 1'; } foreach ($suppliers as $key => $supplier) { $sql = ' SELECT DISTINCT(ps.`id_product`) FROM `' . _DB_PREFIX_ . 'product_supplier` ps JOIN `' . _DB_PREFIX_ . 'product` p ON (ps.`id_product`= p.`id_product`) ' . Shop::addSqlAssociation('product', 'p') . ' WHERE ps.`id_supplier` = ' . (int) $supplier['id_supplier'] . ' AND ps.id_product_attribute = 0' . ($active ? ' AND product_shop.`active` = 1' : '') . ' AND product_shop.`visibility` NOT IN ("none")' . ($all_groups ? '' : ' AND ps.`id_product` IN ( SELECT cp.`id_product` FROM `' . _DB_PREFIX_ . 'category_group` cg LEFT JOIN `' . _DB_PREFIX_ . 'category_product` cp ON (cp.`id_category` = cg.`id_category`) WHERE cg.`id_group` ' . $sql_groups . ' )'); $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); $suppliers[$key]['nb_products'] = count($result); } } $nb_suppliers = count($suppliers); $rewrite_settings = (int) JeproshopSettingModelSetting::getValue('rewrite_settings'); for ($i = 0; $i < $nb_suppliers; $i++) { $suppliers[$i]->link_rewrite = $rewrite_settings ? JeproshopValidator::link_rewrite($suppliers[$i]->name) : 0; } return $suppliers; }
public static function getDefaultGroupId($customer_id) { if (!JeproshopGroupModelGroup::isFeaturePublished()) { return JeproshopSettingModelSetting::getValue('customer_group'); } if (!isset(self::$_defaultGroupId[(int) $customer_id])) { $db = JFactory::getDBO(); $query = "SELECT " . $db->quoteName('default_group_id') . " FROM " . $db->quoteName('#__jeproshop_customer') . " WHERE " . $db->quoteName('customer_id') . " = " . (int) $customer_id; $db->setQuery($query); self::$_defaultGroupId[(int) $customer_id] = $db->loadResult(); } return self::$_defaultGroupId[(int) $customer_id]; }
public static function getCurrentCustomerGroups() { if (!JeproshopGroupModelGroup::isFeaturePublished()) { return array(); } $context = JeproshopContext::getContext(); if (!isset($context->customer) || !$context->customer->customer_id) { return array(); } if (!is_array(self::$currentCustomerGroups)) { self::$currentCustomerGroups = array(); $db = JFactory::getDBO(); $query = "SELECT group_id FROM " . $db->quoteName('#__jeproshop_customer_group') . " WHERE customer_id = " . (int) $context->customer->customer_id; $db->setQuery($query); $result = $db->loadObjectList(); foreach ($result as $row) { self::$currentCustomerGroups[] = $row->group_id; } } return self::$currentCustomerGroups; }