Exemplo n.º 1
0
 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];
 }
Exemplo n.º 2
0
$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);
Exemplo n.º 3
0
 /**
  * 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;
 }
Exemplo n.º 4
0
 /**
  * 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;
 }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 6
0
 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);
 }
Exemplo n.º 7
0
 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);
 }
Exemplo n.º 8
0
 /**
  * @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);
                 }
             }
         }
     }
 }
Exemplo n.º 9
0
    /**
     * 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;
    }
Exemplo n.º 10
0
 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];
 }
Exemplo n.º 11
0
 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;
 }