本文整理汇总了PHP中Customer::getGroupsStatic方法的典型用法代码示例。如果您正苦于以下问题:PHP Customer::getGroupsStatic方法的具体用法?PHP Customer::getGroupsStatic怎么用?PHP Customer::getGroupsStatic使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Customer
的用法示例。
在下文中一共展示了Customer::getGroupsStatic方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: renderContent
public function renderContent($setting)
{
$t = array('categ_root_category' => '1', 'categ_max_depth' => 4, 'categ_dhtml' => 1, 'categ_sort' => 0, 'categ_sort_way' => 0);
$setting = array_merge($t, $setting);
$context = Context::getContext();
$this->setLastVisitedCategory();
$max_depth = $setting['categ_max_depth'];
$result_ids = array();
$result_parents = array();
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT c.id_parent, c.id_category, cl.name, cl.description, cl.link_rewrite
FROM `' . _DB_PREFIX_ . 'category` c
INNER JOIN `' . _DB_PREFIX_ . 'category_lang` cl ON (c.`id_category` = cl.`id_category`
AND cl.`id_lang` = ' . (int) $context->language->id . Shop::addSqlRestrictionOnLang('cl') . ')
INNER JOIN `' . _DB_PREFIX_ . 'category_shop` cs ON (cs.`id_category` = c.`id_category` AND cs.`id_shop` = ' . (int) $context->shop->id . ')
WHERE (c.`active` = 1 OR c.`id_category` = ' . (int) Configuration::get('PS_HOME_CATEGORY') . ')
AND c.`id_category` != ' . (int) Configuration::get('PS_ROOT_CATEGORY') . ((int) $max_depth != 0 ? ' AND `level_depth` <= ' . (int) $max_depth : '') . '
AND c.id_category IN (
SELECT id_category
FROM `' . _DB_PREFIX_ . 'category_group`
WHERE `id_group` IN (' . pSQL(implode(', ', Customer::getGroupsStatic((int) $context->customer->id))) . ')
)
ORDER BY `level_depth` ASC, ' . ($setting['categ_sort'] ? 'cl.`name`' : 'cs.`position`') . ' ' . ($setting['categ_sort_way'] ? 'DESC' : 'ASC'));
foreach ($result as &$row) {
$result_parents[$row['id_parent']][] =& $row;
$result_ids[$row['id_category']] =& $row;
}
$block_categ_tree = $this->getTree($result_parents, $result_ids, $max_depth, null);
$setting['blockCategTree'] = $block_categ_tree;
if ((Tools::getValue('id_product') || Tools::getValue('id_category')) && isset($context->cookie->last_visited_category) && $context->cookie->last_visited_category) {
$category = new Category($context->cookie->last_visited_category, $context->language->id);
if (Validate::isLoadedObject($category)) {
$setting['currentCategory'] = $category;
$setting['currentCategoryId'] = $category->id;
}
}
$setting['isDhtml'] = $setting['categ_dhtml'];
if (file_exists(_PS_THEME_DIR_ . 'modules/pspagebuilder/views/templates/front/widgets/sub/category-tree-branch.tpl')) {
$setting['branche_tpl_path'] = _PS_THEME_DIR_ . 'modules/pspagebuilder/views/templates/front/widgets/sub/category-tree-branch.tpl';
} else {
$setting['branche_tpl_path'] = _PS_MODULE_DIR_ . 'pspagebuilder/views/templates/front/widgets/sub/category-tree-branch.tpl';
}
$output = array('type' => 'categoriesblock', 'data' => $setting);
return $output;
}
示例2: getCustomerCartRules
/**
* @static
* @param $id_lang
* @param $id_customer
* @param bool $active
* @param bool $includeGeneric
* @param bool $inStock
* @param Cart|null $cart
* @return array
*/
public static function getCustomerCartRules($id_lang, $id_customer, $active = false, $includeGeneric = true, $inStock = false, Cart $cart = null)
{
if (!CartRule::isFeatureActive()) {
return array();
}
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT *
FROM `' . _DB_PREFIX_ . 'cart_rule` cr
LEFT JOIN `' . _DB_PREFIX_ . 'cart_rule_lang` crl ON (cr.`id_cart_rule` = crl.`id_cart_rule` AND crl.`id_lang` = ' . (int) $id_lang . ')
WHERE (
cr.`id_customer` = ' . (int) $id_customer . ' OR cr.group_restriction = 1
' . ($includeGeneric ? 'OR cr.`id_customer` = 0' : '') . '
)
AND cr.date_from < "' . date('Y-m-d H:i:s') . '"
AND cr.date_to > "' . date('Y-m-d H:i:s') . '"
' . ($active ? 'AND cr.`active` = 1' : '') . '
' . ($inStock ? 'AND cr.`quantity` > 0' : ''));
// Remove cart rule that does not match the customer groups
$customerGroups = Customer::getGroupsStatic($id_customer);
foreach ($result as $key => $cart_rule) {
if ($cart_rule['group_restriction']) {
$cartRuleGroups = Db::getInstance()->executeS('SELECT id_group FROM ' . _DB_PREFIX_ . 'cart_rule_group WHERE id_cart_rule = ' . (int) $cart_rule['id_cart_rule']);
foreach ($cartRuleGroups as $cartRuleGroup) {
if (in_array($cartRuleGroup['id_group'], $customerGroups)) {
continue 2;
}
}
unset($result[$key]);
}
}
foreach ($result as &$cart_rule) {
if ($cart_rule['quantity_per_user']) {
$quantity_used = Order::getDiscountsCustomer((int) $id_customer, (int) $cart_rule['id_cart_rule']);
if (isset($cart) && isset($cart->id)) {
$quantity_used += $cart->getDiscountsCustomer((int) $cart_rule['id_cart_rule']);
}
$cart_rule['quantity_for_user'] = $cart_rule['quantity_per_user'] - $quantity_used;
} else {
$cart_rule['quantity_for_user'] = 0;
}
}
unset($cart_rule);
foreach ($result as $cart_rule) {
if ($cart_rule['shop_restriction']) {
$cartRuleShops = Db::getInstance()->executeS('SELECT id_shop FROM ' . _DB_PREFIX_ . 'cart_rule_shop WHERE id_cart_rule = ' . (int) $cart_rule['id_cart_rule']);
foreach ($cartRuleShops as $cartRuleShop) {
if (Shop::isFeatureActive() && $cartRuleShop['id_shop'] == Context::getContext()->shop->id) {
continue 2;
}
}
unset($result[$key]);
}
}
// Retrocompatibility with 1.4 discounts
foreach ($result as &$cart_rule) {
$cart_rule['value'] = 0;
$cart_rule['minimal'] = $cart_rule['minimum_amount'];
$cart_rule['cumulable'] = !$cart_rule['cart_rule_restriction'];
$cart_rule['id_discount_type'] = false;
if ($cart_rule['free_shipping']) {
$cart_rule['id_discount_type'] = Discount::FREE_SHIPPING;
} elseif ($cart_rule['reduction_percent'] > 0) {
$cart_rule['id_discount_type'] = Discount::PERCENT;
$cart_rule['value'] = $cart_rule['reduction_percent'];
} elseif ($cart_rule['reduction_amount'] > 0) {
$cart_rule['id_discount_type'] = Discount::AMOUNT;
$cart_rule['value'] = $cart_rule['reduction_amount'];
}
}
return $result;
}
示例3: getReduction
function getReduction($va92811717d11, $v0688afdf8a14, $cookie)
{
if (isset($cookie->id_customer)) {
$v4612b6226467 = $cookie->id_customer;
$v156e9bc09d33 = $cookie->id_currency;
$v1d6e2b7aff3f = implode(', ', Customer::getGroupsStatic($v4612b6226467));
} else {
$v156e9bc09d33 = 0;
$v1d6e2b7aff3f = 0;
}
$v85f53d729293 = '0';
$v0c695db2467f = DB::getInstance()->ExecuteS('SELECT from_quantity, reduction FROM ' . _DB_PREFIX_ . 'specific_price WHERE reduction_type = "percentage" AND id_product=' . $va92811717d11 . ' AND (`from` < NOW() OR `from`="0000-00-00 00:00:00") AND (`to` > NOW() OR `to`="0000-00-00 00:00:00") AND id_group IN (0, ' . $v1d6e2b7aff3f . ') AND id_currency IN(0, ' . (int) $v156e9bc09d33 . ') ORDER BY reduction DESC');
foreach ($v0c695db2467f as $v71979fa1b961) {
if (intval($v71979fa1b961['from_quantity']) <= $v0688afdf8a14) {
$v85f53d729293 = $v71979fa1b961['reduction'];
break;
}
}
return $v85f53d729293;
}
示例4: getGroups
public function getGroups()
{
return Customer::getGroupsStatic((int) $this->id);
}
示例5: getCustomerCartRules
/**
* Get CartRules for the given Customer
*
* @param int $id_lang Language ID
* @param int $id_customer Customer ID
* @param bool $active Active vouchers only
* @param bool $includeGeneric Include generic AND highlighted vouchers, regardless of highlight_only setting
* @param bool $inStock Vouchers in stock only
* @param Cart|null $cart Cart
* @param bool $free_shipping_only Free shipping only
* @param bool $highlight_only Highlighted vouchers only
* @return array
* @throws PrestaShopDatabaseException
*/
public static function getCustomerCartRules($id_lang, $id_customer, $active = false, $includeGeneric = true, $inStock = false, Cart $cart = null, $free_shipping_only = false, $highlight_only = false)
{
if (!CartRule::isFeatureActive()) {
return array();
}
$sql_part1 = '* FROM `' . _DB_PREFIX_ . 'cart_rule` cr
LEFT JOIN `' . _DB_PREFIX_ . 'cart_rule_lang` crl ON (cr.`id_cart_rule` = crl.`id_cart_rule` AND crl.`id_lang` = ' . (int) $id_lang . ')';
$sql_part2 = ' AND cr.date_from < "' . date('Y-m-d H:i:s') . '"
AND cr.date_to > "' . date('Y-m-d H:i:s') . '"
' . ($active ? 'AND cr.`active` = 1' : '') . '
' . ($inStock ? 'AND cr.`quantity` > 0' : '');
if ($free_shipping_only) {
$sql_part2 .= ' AND free_shipping = 1 AND carrier_restriction = 1';
}
if ($highlight_only) {
$sql_part2 .= ' AND highlight = 1 AND code NOT LIKE "' . pSQL(CartRule::BO_ORDER_CODE_PREFIX) . '%"';
}
$sql = '(SELECT SQL_NO_CACHE ' . $sql_part1 . ' WHERE cr.`id_customer` = ' . (int) $id_customer . ' ' . $sql_part2 . ')';
$sql .= ' UNION (SELECT ' . $sql_part1 . ' WHERE cr.`group_restriction` = 1 ' . $sql_part2 . ')';
if ($includeGeneric && (int) $id_customer != 0) {
$sql .= ' UNION (SELECT ' . $sql_part1 . ' WHERE cr.`id_customer` = 0 ' . $sql_part2 . ')';
}
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql, true, false);
if (empty($result)) {
return array();
}
// Remove cart rule that does not match the customer groups
$customerGroups = Customer::getGroupsStatic($id_customer);
foreach ($result as $key => $cart_rule) {
if ($cart_rule['group_restriction']) {
$cartRuleGroups = Db::getInstance()->executeS('SELECT id_group FROM ' . _DB_PREFIX_ . 'cart_rule_group WHERE id_cart_rule = ' . (int) $cart_rule['id_cart_rule']);
foreach ($cartRuleGroups as $cartRuleGroup) {
if (in_array($cartRuleGroup['id_group'], $customerGroups)) {
continue 2;
}
}
unset($result[$key]);
}
}
foreach ($result as &$cart_rule) {
if ($cart_rule['quantity_per_user']) {
$quantity_used = Order::getDiscountsCustomer((int) $id_customer, (int) $cart_rule['id_cart_rule']);
if (isset($cart) && isset($cart->id)) {
$quantity_used += $cart->getDiscountsCustomer((int) $cart_rule['id_cart_rule']);
}
$cart_rule['quantity_for_user'] = $cart_rule['quantity_per_user'] - $quantity_used;
} else {
$cart_rule['quantity_for_user'] = 0;
}
}
unset($cart_rule);
foreach ($result as $key => $cart_rule) {
if ($cart_rule['shop_restriction']) {
$cartRuleShops = Db::getInstance()->executeS('SELECT id_shop FROM ' . _DB_PREFIX_ . 'cart_rule_shop WHERE id_cart_rule = ' . (int) $cart_rule['id_cart_rule']);
foreach ($cartRuleShops as $cartRuleShop) {
if (Shop::isFeatureActive() && $cartRuleShop['id_shop'] == Context::getContext()->shop->id) {
continue 2;
}
}
unset($result[$key]);
}
}
if (isset($cart) && isset($cart->id)) {
foreach ($result as $key => $cart_rule) {
if ($cart_rule['product_restriction']) {
$cr = new CartRule((int) $cart_rule['id_cart_rule']);
$r = $cr->checkProductRestrictions(Context::getContext(), false, false);
if ($r !== false) {
continue;
}
unset($result[$key]);
}
}
}
$result_bak = $result;
$result = array();
$country_restriction = false;
foreach ($result_bak as $key => $cart_rule) {
if ($cart_rule['country_restriction']) {
$country_restriction = true;
$countries = Db::getInstance()->ExecuteS('
SELECT `id_country`
FROM `' . _DB_PREFIX_ . 'address`
WHERE `id_customer` = ' . (int) $id_customer . '
AND `deleted` = 0');
if (is_array($countries) && count($countries)) {
//.........这里部分代码省略.........
示例6: init
//.........这里部分代码省略.........
}
if (Validate::isLoadedObject($ps_language = new Language((int) $cookie->id_lang))) {
$smarty->ps_language = $ps_language;
}
/* get page name to display it in body id */
$pathinfo = pathinfo(__FILE__);
$page_name = basename($_SERVER['PHP_SELF'], '.' . $pathinfo['extension']);
$page_name = preg_match('/^[0-9]/', $page_name) ? 'page_' . $page_name : $page_name;
$smarty->assign(Tools::getMetaTags($cookie->id_lang, $page_name));
$smarty->assign('request_uri', Tools::safeOutput(urldecode($_SERVER['REQUEST_URI'])));
/* Breadcrumb */
$navigationPipe = Configuration::get('PS_NAVIGATION_PIPE') ? Configuration::get('PS_NAVIGATION_PIPE') : '>';
$smarty->assign('navigationPipe', $navigationPipe);
$protocol_link = (Configuration::get('PS_SSL_ENABLED') or !empty($_SERVER['HTTPS']) and strtolower($_SERVER['HTTPS']) != 'off') ? 'https://' : 'http://';
$protocol_content = (isset($useSSL) and $useSSL and Configuration::get('PS_SSL_ENABLED') or !empty($_SERVER['HTTPS']) and strtolower($_SERVER['HTTPS']) != 'off') ? 'https://' : 'http://';
if (!defined('_PS_BASE_URL_')) {
define('_PS_BASE_URL_', Tools::getShopDomain(true));
}
if (!defined('_PS_BASE_URL_SSL_')) {
define('_PS_BASE_URL_SSL_', Tools::getShopDomainSsl(true));
}
$link->preloadPageLinks();
$this->canonicalRedirection();
Product::initPricesComputation();
$display_tax_label = $defaultCountry->display_tax_label;
if ($cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')}) {
$infos = Address::getCountryAndState((int) $cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')});
$country = new Country((int) $infos['id_country']);
if (Validate::isLoadedObject($country)) {
$display_tax_label = $country->display_tax_label;
}
}
global $isBetaUser, $conversion_rate_inr;
$conversion_rate_inr = 55;
if (!$cookie->isLogged()) {
$this->initFacebook();
} else {
$customer_groups = Customer::getGroupsStatic((int) $cookie->id_customer);
if (in_array(2, $customer_groups)) {
$smarty->assign('internal_vb_user', 1);
}
if (in_array(3, $customer_groups)) {
$isBetaUser = true;
} else {
$isBetaUser = false;
}
/*$reward_points = VBRewards::getCustomerPoints($cookie->id_customer);
$can_redeem = VBRewards::checkPointsValidity($cookie->id_customer, 0);
if($can_redeem)
$smarty->assign('can_redeem_points', 1);
$smarty->assign('balance_points', $reward_points);*/
}
$smarty->assign('img_version', IMG_VERSION);
$this->setRecaptchaHTML();
if ($page_name === "index") {
$sql = "select title,image_path,url from ps_banner where is_active = 1 order by display_order asc";
$home_banners = Db::getInstance()->ExecuteS($sql);
$smarty->assign("home_banners", $home_banners);
}
$smarty->assign(array('lazy' => 1, 'link' => $link, 'cart' => $cart, 'currency' => $currency, 'cookie' => $cookie, 'page_name' => $page_name, 'base_dir' => _PS_BASE_URL_ . __PS_BASE_URI__, 'base_dir_ssl' => $protocol_link . Tools::getShopDomainSsl() . __PS_BASE_URI__, 'content_dir' => $protocol_content . Tools::getShopDomain() . __PS_BASE_URI__, 'tpl_dir' => _PS_THEME_DIR_, 'modules_dir' => _MODULE_DIR_, 'mail_dir' => _MAIL_DIR_, 'lang_iso' => $ps_language->iso_code, 'come_from' => Tools::getHttpHost(true, true) . Tools::htmlentitiesUTF8(str_replace('\'', '', urldecode($_SERVER['REQUEST_URI']))), 'cart_qties' => (int) $cart->nbProducts(), 'currencies' => Currency::getCurrencies(), 'languages' => Language::getLanguages(), 'priceDisplay' => Product::getTaxCalculationMethod(), 'add_prod_display' => (int) Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 'shop_name' => Configuration::get('PS_SHOP_NAME'), 'roundMode' => (int) Configuration::get('PS_PRICE_ROUND_MODE'), 'use_taxes' => (int) Configuration::get('PS_TAX'), 'display_tax_label' => (bool) $display_tax_label, 'vat_management' => (int) Configuration::get('VATNUMBER_MANAGEMENT'), 'opc' => (bool) Configuration::get('PS_ORDER_PROCESS_TYPE'), 'PS_CATALOG_MODE' => (bool) Configuration::get('PS_CATALOG_MODE'), 'conversion_rate' => $conversion_rate_inr));
// Deprecated
$smarty->assign(array('id_currency_cookie' => (int) $currency->id, 'logged' => $cookie->isLogged(), 'customerName' => $cookie->logged ? $cookie->customer_firstname . ' ' . $cookie->customer_lastname : false));
// TODO for better performances (cache usage), remove these assign and use a smarty function to get the right media server in relation to the full ressource name
$assignArray = array('img_ps_dir' => _PS_IMG_, 'img_cat_dir' => _THEME_CAT_DIR_, 'img_lang_dir' => _THEME_LANG_DIR_, 'img_prod_dir' => _THEME_PROD_DIR_, 'img_manu_dir' => _THEME_MANU_DIR_, 'img_sup_dir' => _THEME_SUP_DIR_, 'img_ship_dir' => _THEME_SHIP_DIR_, 'img_store_dir' => _THEME_STORE_DIR_, 'img_col_dir' => _THEME_COL_DIR_, 'img_dir' => _THEME_IMG_DIR_, 'css_dir' => _THEME_CSS_DIR_, 'js_dir' => _THEME_JS_DIR_, 'pic_dir' => _THEME_PROD_PIC_DIR_);
foreach ($assignArray as $assignKey => $assignValue) {
if (substr($assignValue, 0, 1) == '/' or $protocol_content == 'https://') {
$smarty->assign($assignKey, $protocol_content . Tools::getMediaServer($assignValue) . $assignValue);
} else {
$smarty->assign($assignKey, $assignValue);
}
}
// setting properties from global var
self::$cookie = $cookie;
self::$cart = $cart;
self::$smarty = $smarty;
self::$link = $link;
if ($this->maintenance) {
$this->displayMaintenancePage();
}
if ($this->restrictedCountry) {
$this->displayRestrictedCountryPage();
}
//live edit
if (Tools::isSubmit('live_edit') and $ad = Tools::getValue('ad') and Tools::getValue('liveToken') == sha1(Tools::getValue('ad') . _COOKIE_KEY_)) {
if (!is_dir(_PS_ROOT_DIR_ . DIRECTORY_SEPARATOR . $ad)) {
die(Tools::displayError());
}
}
$this->iso = $iso;
$this->setMedia();
//For sokrati pixel
self::$smarty->assign("new_customer_regd", false);
if ((int) self::$cookie->new_reg === 1) {
self::$smarty->assign("new_customer_regd", true);
unset(self::$cookie->new_reg);
}
if (self::$cookie->id_customer) {
self::$smarty->assign("balance_points", VBRewards::getCustomerPoints(self::$cookie->id_customer));
}
}
示例7: getblockCategTree
public function getblockCategTree()
{
// Get all groups for this customer and concatenate them as a string: "1,2,3..."
$groups = implode(', ', Customer::getGroupsStatic((int) $this->context->customer->id));
$maxdepth = Configuration::get('BLOCK_CATEG_MAX_DEPTH');
if (!($result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT DISTINCT c.id_parent, c.id_category, cl.name, cl.description, cl.link_rewrite
FROM `' . _DB_PREFIX_ . 'category` c
INNER JOIN `' . _DB_PREFIX_ . 'category_lang` cl ON (c.`id_category` = cl.`id_category` AND cl.`id_lang` = ' . (int) $this->context->language->id . Shop::addSqlRestrictionOnLang('cl') . ')
INNER JOIN `' . _DB_PREFIX_ . 'category_shop` cs ON (cs.`id_category` = c.`id_category` AND cs.`id_shop` = ' . (int) $this->context->shop->id . ')
WHERE (c.`active` = 1 OR c.`id_category` = ' . (int) Configuration::get('PS_HOME_CATEGORY') . ')
AND c.`id_category` != ' . (int) Configuration::get('PS_ROOT_CATEGORY') . '
' . ((int) $maxdepth != 0 ? ' AND `level_depth` <= ' . (int) $maxdepth : '') . '
AND c.id_category IN (SELECT id_category FROM `' . _DB_PREFIX_ . 'category_group` WHERE `id_group` IN (' . pSQL($groups) . '))
ORDER BY `level_depth` ASC, ' . (Configuration::get('BLOCK_CATEG_SORT') ? 'cl.`name`' : 'cs.`position`') . ' ' . (Configuration::get('BLOCK_CATEG_SORT_WAY') ? 'DESC' : 'ASC')))) {
return;
}
$resultParents = array();
$resultIds = array();
foreach ($result as &$row) {
$resultParents[$row['id_parent']][] =& $row;
$resultIds[$row['id_category']] =& $row;
}
$blockCategTree = $this->getTree($resultParents, $resultIds, Configuration::get('BLOCK_CATEG_MAX_DEPTH'));
unset($resultParents, $resultIds);
$id_category = (int) Tools::getValue('id_category');
$id_product = (int) Tools::getValue('id_product');
if (Tools::isSubmit('id_category')) {
$this->context->cookie->last_visited_category = $id_category;
$this->smarty->assign('currentCategoryId', $this->context->cookie->last_visited_category);
}
if (Tools::isSubmit('id_product')) {
if (!isset($this->context->cookie->last_visited_category) || !Product::idIsOnCategoryId($id_product, array('0' => array('id_category' => $this->context->cookie->last_visited_category))) || !Category::inShopStatic($this->context->cookie->last_visited_category, $this->context->shop)) {
$product = new Product($id_product);
if (isset($product) && Validate::isLoadedObject($product)) {
$this->context->cookie->last_visited_category = (int) $product->id_category_default;
}
}
$this->smarty->assign('currentCategoryId', (int) $this->context->cookie->last_visited_category);
}
return $blockCategTree;
}
示例8: checkDiscountValidity
/**
* Check discount validity
*
* @return mixed Return a string if an error occurred and false otherwise
*/
function checkDiscountValidity($discountObj, $discounts, $order_total, $products, $checkCartDiscount = false)
{
global $cookie;
if (!$order_total) {
return Tools::displayError('Cannot add voucher if order is free.');
}
if (!$discountObj->active) {
return Tools::displayError('This voucher has already been used or is disabled.');
}
if (!$discountObj->quantity) {
return Tools::displayError('This voucher has expired (usage limit attained).');
}
if ($discountObj->id_discount_type == 2 and $this->id_currency != $discountObj->id_currency) {
return Tools::displayError('This voucher can only be used in the following currency:') . '
' . Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT `name` FROM `' . _DB_PREFIX_ . 'currency` WHERE id_currency = ' . (int) $discountObj->id_currency);
}
if ($checkCartDiscount and ($this->getDiscountsCustomer($discountObj->id) >= $discountObj->quantity_per_user or (Order::getDiscountsCustomer((int) $cookie->id_customer, $discountObj->id) + $this->getDiscountsCustomer($discountObj->id) >= $discountObj->quantity_per_user) >= $discountObj->quantity_per_user)) {
return Tools::displayError('You cannot use this voucher anymore (usage limit attained).');
}
if (strtotime($discountObj->date_from) > time()) {
return Tools::displayError('This voucher is not yet valid');
}
if (strtotime($discountObj->date_to) < time()) {
return Tools::displayError('This voucher has expired.');
}
if (sizeof($discounts) >= 1 and $checkCartDiscount) {
if (!$discountObj->cumulable) {
return Tools::displayError('This voucher is not valid with other current discounts.');
}
foreach ($discounts as $discount) {
if (!$discount['cumulable']) {
return Tools::displayError('Voucher is not valid with other discounts.');
}
}
foreach ($discounts as $discount) {
if ($discount['id_discount'] == $discountObj->id) {
return Tools::displayError('This voucher is already in your cart');
}
}
}
$groups = Customer::getGroupsStatic($this->id_customer);
if (($discountObj->id_customer or $discountObj->id_group) and (($this->id_customer != $discountObj->id_customer or $this->id_customer == 0) and !in_array($discountObj->id_group, $groups))) {
if (!$cookie->isLogged()) {
return Tools::displayError('You cannot use this voucher.') . ' - ' . Tools::displayError('Please log in.');
}
return Tools::displayError('You cannot use this voucher.');
}
$onlyProductWithDiscount = true;
if (!$discountObj->cumulable_reduction) {
foreach ($products as $product) {
if (!$product['reduction_applies'] and !$product['on_sale']) {
$onlyProductWithDiscount = false;
}
}
}
if (!$discountObj->cumulable_reduction and $onlyProductWithDiscount) {
return Tools::displayError('This voucher is not valid for marked or reduced products.');
}
$total_cart = 0;
$categories = Discount::getCategories($discountObj->id);
$returnErrorNoProductCategory = true;
foreach ($products as $product) {
if (count($categories)) {
if (Product::idIsOnCategoryId($product['id_product'], $categories)) {
if (!$discountObj->cumulable_reduction and !$product['reduction_applies'] and !$product['on_sale'] or $discountObj->cumulable_reduction) {
$total_cart += $discountObj->include_tax ? $product['total_wt'] : $product['total'];
}
$returnErrorNoProductCategory = false;
}
}
}
if ($returnErrorNoProductCategory) {
return Tools::displayError('This discount does not apply to that product category.');
}
if ($total_cart < $discountObj->minimal) {
return Tools::displayError('The order total is not high enough or this voucher cannot be used with those products.');
}
return false;
}
示例9: getCacheId
protected function getCacheId($name = null)
{
$cache_array = array();
$cache_array[] = $name !== null ? $name : $this->name;
if (Configuration::get('PS_SSL_ENABLED')) {
$cache_array[] = (int) Tools::usingSecureMode();
}
if (Shop::isFeatureActive()) {
$cache_array[] = (int) $this->context->shop->id;
}
if (Group::isFeatureActive() && isset($this->context->customer)) {
$cache_array[] = (int) Group::getCurrent()->id;
$cache_array[] = implode('_', Customer::getGroupsStatic($this->context->customer->id));
}
if (Language::isMultiLanguageActivated()) {
$cache_array[] = (int) $this->context->language->id;
}
if (Currency::isMultiCurrencyActivated()) {
$cache_array[] = (int) $this->context->currency->id;
}
$cache_array[] = (int) $this->context->country->id;
return implode('|', $cache_array);
}
示例10: getCustomerGroups
public static function getCustomerGroups()
{
$groups = array();
if (version_compare(_PS_VERSION_, '1.5.0.0', '>=') && Group::isFeatureActive()) {
if (Validate::isLoadedObject(Context::getContext()->customer)) {
$groups = FrontController::getCurrentCustomerGroups();
} else {
$groups = array((int) Configuration::get('PS_UNIDENTIFIED_GROUP'));
}
} else {
if (version_compare(_PS_VERSION_, '1.4.0.2', '>=') && version_compare(_PS_VERSION_, '1.5.0.0', '<')) {
global $cookie;
$groups = Customer::getGroupsStatic((int) $cookie->id_customer);
} else {
if (version_compare(_PS_VERSION_, '1.4.0.2', '<') && version_compare(_PS_VERSION_, '1.2.5.0', '>=')) {
global $cookie;
$result = Db::getInstance()->ExecuteS('SELECT cg.`id_group` FROM ' . _DB_PREFIX_ . 'customer_group cg WHERE cg.`id_customer` = ' . (int) $cookie->id_customer);
if ($result && is_array($result)) {
foreach ($result as $group) {
$groups[] = (int) $group['id_group'];
}
}
}
}
}
sort($groups);
return $groups;
}
示例11: hookTop
function hookTop($params)
{
//get disable categories
$CATS = Configuration::get('MEGAMENU_CATS');
$UN_CATS = array();
$UN_CATS = unserialize($CATS);
$context = Context::getContext();
if (version_compare(_PS_VERSION_, '1.5.0.0') == +1) {
$id_current_shop = $this->context->shop->id;
$id_customer = (int) $params['cookie']->id_customer;
// Get all groups for this customer and concatenate them as a string: "1,2,3..."
// It is necessary to keep the group query separate from the main select query because it is used for the cache
$groups = $id_customer ? implode(', ', Customer::getGroupsStatic($id_customer)) : Configuration::get('PS_UNIDENTIFIED_GROUP');
$id_product = (int) Tools::getValue('id_product', 0);
$id_category = (int) Tools::getValue('id_category', 0);
$id_lang = (int) $params['cookie']->id_lang;
$smartyCacheId = 'megamenu|' . $id_current_shop . '_' . $groups . '_' . $id_lang . '_' . $id_product . '_' . $id_category;
Tools::enableCache();
if (!$this->isCached('tmp/megamenu.tpl', $smartyCacheId)) {
$maxdepth = 4;
if (!($result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT c.id_parent, c.id_category, cl.name, cl.description, cl.link_rewrite, cs.position
FROM `' . _DB_PREFIX_ . 'category` c
LEFT JOIN `' . _DB_PREFIX_ . 'category_lang` cl ON (c.`id_category` = cl.`id_category` AND cl.`id_lang` = ' . $id_lang . Shop::addSqlRestrictionOnLang('cl') . ')
LEFT JOIN `' . _DB_PREFIX_ . 'category_group` cg ON (cg.`id_category` = c.`id_category`)
LEFT JOIN `' . _DB_PREFIX_ . 'category_shop` cs ON (cs.`id_category` = c.`id_category`)
WHERE (c.`active` = 1 OR c.`id_category` = ' . (int) Configuration::get('PS_HOME_CATEGORY') . ')
AND c.`id_category` NOT IN (' . (count($UN_CATS) > 0 ? implode(",", $UN_CATS) : "-1") . ')
' . ((int) $maxdepth != 0 ? ' AND `level_depth` <= ' . (int) $maxdepth : '') . '
AND cg.`id_group` IN (' . pSQL($groups) . ')
AND cs.`id_shop` = ' . (int) Context::getContext()->shop->id . '
GROUP BY id_category
ORDER BY `level_depth` ASC, cs.`position` ASC'))) {
return Tools::restoreCacheSettings();
}
$customResult = Db::getInstance()->ExecuteS('
SELECT * FROM `' . _DB_PREFIX_ . 'megamenu` m
LEFT JOIN `' . _DB_PREFIX_ . 'megamenu_lang` ml ON (m.`id_megamenu` = ml.`id_megamenu` AND ml.`id_lang` = ' . intval($params['cookie']->id_lang) . ')
WHERE m.`active` = 1 AND m.`id_shop` = ' . (int) Context::getContext()->shop->id . ' ORDER BY m.`position` ASC');
$total = count($customResult);
for ($i = 0; $i < $total; $i++) {
$customResult[$i]['id_category'] = 'c' . $customResult[$i]['id_megamenu'];
$customResult[$i]['type'] = 'custom';
if ($customResult[$i]['parent_custom'] == 1) {
$customResult[$i]['id_parent'] = 'c' . $customResult[$i]['parent'];
} else {
$customResult[$i]['id_parent'] = $customResult[$i]['parent'];
}
}
$mergeresult = array_merge($result, $customResult);
$this->aasort($mergeresult, "position");
//echo print_r($mergeresult);
$resultParents = array();
$resultIds = array();
foreach ($mergeresult as &$row) {
$resultParents[$row['id_parent']][] =& $row;
$resultIds[$row['id_category']] =& $row;
}
$blockCategTree = $this->getTree($resultParents, $resultIds, 3, (int) Configuration::get('PS_HOME_CATEGORY'));
unset($resultParents);
unset($resultIds);
$isDhtml = Configuration::get('BLOCK_CATEG_DHTML') == 1 ? true : false;
if (Tools::isSubmit('id_category')) {
$this->context->cookie->last_visited_category = $id_category;
$this->smarty->assign('currentCategoryId', $this->context->cookie->last_visited_category);
}
if (Tools::isSubmit('id_product')) {
if (!isset($this->context->cookie->last_visited_category) || !Product::idIsOnCategoryId($id_product, array('0' => array('id_category' => $this->context->cookie->last_visited_category)))) {
$product = new Product($id_product);
if (isset($product) && Validate::isLoadedObject($product)) {
$this->context->cookie->last_visited_category = (int) $product->id_category_default;
}
}
$this->smarty->assign('currentCategoryId', (int) $this->context->cookie->last_visited_category);
}
}
}
$tmp = null;
$context->smarty->assign('blockCategTree', $blockCategTree);
$context->smarty->assign('this_path', $this->_path);
$context->smarty->assign('branche_tpl_path', _PS_MODULE_DIR_ . 'megamenu/tmp/category-tree-branch.tpl');
$context->smarty->assign('MEGAMENU_COLOR', Configuration::get('MEGAMENU_COLOR'));
$context->smarty->assign('MEGAMENU_ROWITEMS', Configuration::get('MEGAMENU_ROWITEMS'));
$context->smarty->assign('MEGAMENU_SPEED', Configuration::get('MEGAMENU_SPEED'));
$context->smarty->assign('MEGAMENU_EFFECT', Configuration::get('MEGAMENU_EFFECT'));
$context->smarty->assign('MEGAMENU_EVENT', Configuration::get('MEGAMENU_EVENT'));
$context->smarty->assign('MEGAMENU_FULLWIDTH', Configuration::get('MEGAMENU_FULLWIDTH'));
$context->smarty->assign('MEGAMENU_DISPLAYIMAGES', Configuration::get('MEGAMENU_DISPLAYIMAGES'));
$context->smarty->assign('MEGAMENU_MARGINLEFT', Configuration::get('MEGAMENU_MARGINLEFT'));
$context->smarty->assign('MEGAMENU_MARGINTOP', Configuration::get('MEGAMENU_MARGINTOP'));
$context->smarty->assign('MEGAMENU_MARGINRIGHT', Configuration::get('MEGAMENU_MARGINRIGHT'));
$context->smarty->assign('MEGAMENU_MARGINBOTTOM', Configuration::get('MEGAMENU_MARGINBOTTOM'));
$display = $this->display(__FILE__, 'tmp/megamenu.tpl', $smartyCacheId);
Tools::restoreCacheSettings();
return $display;
}
示例12: getCacheId
protected function getCacheId($name = null)
{
$name = ($name ? $name . '|' : '') . implode('-', Customer::getGroupsStatic($this->context->customer->id));
return parent::getCacheId($name);
}
示例13: getCategories
private function getCategories($category)
{
$range = '';
$maxdepth = Configuration::get('BLOCK_CATEG_MAX_DEPTH');
if (Validate::isLoadedObject($category)) {
if ($maxdepth > 0) {
$maxdepth += $category->level_depth;
}
$range = 'AND nleft >= ' . (int) $category->nleft . ' AND nright <= ' . (int) $category->nright;
}
$resultIds = array();
$resultParents = array();
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT c.id_parent, c.id_category, cl.name, cl.description, cl.link_rewrite
FROM `' . _DB_PREFIX_ . 'category` c
INNER JOIN `' . _DB_PREFIX_ . 'category_lang` cl ON (c.`id_category` = cl.`id_category` AND cl.`id_lang` = ' . (int) $this->context->language->id . Shop::addSqlRestrictionOnLang('cl') . ')
INNER JOIN `' . _DB_PREFIX_ . 'category_shop` cs ON (cs.`id_category` = c.`id_category` AND cs.`id_shop` = ' . (int) $this->context->shop->id . ')
WHERE (c.`active` = 1 OR c.`id_category` = ' . (int) Configuration::get('PS_HOME_CATEGORY') . ')
AND c.`id_category` != ' . (int) Configuration::get('PS_ROOT_CATEGORY') . '
' . ((int) $maxdepth != 0 ? ' AND `level_depth` <= ' . (int) $maxdepth : '') . '
' . $range . '
AND c.id_category IN (
SELECT id_category
FROM `' . _DB_PREFIX_ . 'category_group`
WHERE `id_group` IN (' . pSQL(implode(', ', Customer::getGroupsStatic((int) $this->context->customer->id))) . ')
)
ORDER BY `level_depth` ASC, ' . (Configuration::get('BLOCK_CATEG_SORT') ? 'cl.`name`' : 'cs.`position`') . ' ' . (Configuration::get('BLOCK_CATEG_SORT_WAY') ? 'DESC' : 'ASC'));
foreach ($result as &$row) {
$resultParents[$row['id_parent']][] =& $row;
$resultIds[$row['id_category']] =& $row;
}
return $this->getTree($resultParents, $resultIds, $maxdepth, $category ? $category->id : null);
}
示例14: calculHookCommon
private function calculHookCommon($params)
{
$categories_selector = Configuration::get('iqitsearch_categories');
if ($categories_selector) {
$range = '';
$maxdepth = (int) Configuration::get('iqitsearch_depth');
$homecat = (int) Configuration::get('PS_HOME_CATEGORY');
if ($homecat == 0) {
$homecat = (int) Configuration::get('PS_ROOT_CATEGORY');
}
$resultIds = array();
$resultParents = array();
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT c.id_parent, c.id_category, cl.name
FROM `' . _DB_PREFIX_ . 'category` c
INNER JOIN `' . _DB_PREFIX_ . 'category_lang` cl ON (c.`id_category` = cl.`id_category` AND cl.`id_lang` = ' . (int) $this->context->language->id . Shop::addSqlRestrictionOnLang('cl') . ')
INNER JOIN `' . _DB_PREFIX_ . 'category_shop` cs ON (cs.`id_category` = c.`id_category` AND cs.`id_shop` = ' . (int) $this->context->shop->id . ')
WHERE (c.`active` = 1 OR c.`id_category` = ' . (int) $homecat . ')
AND c.`id_category` != ' . (int) Configuration::get('PS_ROOT_CATEGORY') . '
' . ((int) $maxdepth != 0 ? ' AND `level_depth` <= ' . (int) $maxdepth : '') . '
AND c.id_category IN (
SELECT id_category
FROM `' . _DB_PREFIX_ . 'category_group`
WHERE `id_group` IN (' . pSQL(implode(', ', Customer::getGroupsStatic((int) $this->context->customer->id))) . ')
)
ORDER BY `level_depth` ASC, cs.`position` ASC');
foreach ($result as &$row) {
$resultParents[$row['id_parent']][] =& $row;
$resultIds[$row['id_category']] =& $row;
}
$blockCategTree = $this->getTree($resultParents, $resultIds, $maxdepth, $homecat);
$this->smarty->assign('blockCategTree', $blockCategTree);
}
$this->smarty->assign(array('ENT_QUOTES' => ENT_QUOTES, 'search_ssl' => Tools::usingSecureMode(), 'ajaxsearch' => Configuration::get('PS_SEARCH_AJAX'), 'instantsearch' => Configuration::get('PS_INSTANT_SEARCH'), 'self' => dirname(__FILE__)));
return true;
}
示例15: checkDiscountValidity
/**
* Check discount validity
*
* @return mixed Return a string if an error occurred and false otherwise
*/
function checkDiscountValidity($discountObj, $discounts, $order_total, $products, $checkCartDiscount = true)
{
global $cookie;
// if(strpos('B1G1', $discountObj->name) == 0)
// return false;
if (!$order_total) {
return Tools::displayError('Cannot add voucher if order is free.');
}
if (!$discountObj->active) {
return Tools::displayError('This voucher has already been used or is disabled.');
}
if (!$discountObj->quantity) {
return Tools::displayError('This voucher has expired (usage limit attained).');
}
//if (($discountObj->id_discount_type == 2 || $discountObj->id_discount_type == 4) AND $this->id_currency != $discountObj->id_currency)
//return Tools::displayError('This voucher can only be used in the following currency:').'
//'.Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT `name` FROM `'._DB_PREFIX_.'currency` WHERE id_currency = '.(int)$discountObj->id_currency);
if ($checkCartDiscount and ($this->getDiscountsCustomer($discountObj->id) >= $discountObj->quantity_per_user or (Order::getDiscountsCustomer((int) $cookie->id_customer, $discountObj->id) + $this->getDiscountsCustomer($discountObj->id) >= $discountObj->quantity_per_user) >= $discountObj->quantity_per_user)) {
return Tools::displayError('You cannot use this voucher anymore (usage limit attained).');
}
/*if ((
$this->getDiscountsGroupCustomer($discountObj->discount_group) >= $discountObj->quantity_per_user
OR (Order::getDiscountsGroupCustomer((int)($cookie->id_customer), $discountObj->discount_group) + $this->getDiscountsGroupCustomer($discountObj->discount_group) >= $discountObj->quantity_per_user) >= $discountObj->quantity_per_user
)
)
return Tools::displayError('Vouchers from this promotion can only be used once by a customer.');*/
if (strtotime($discountObj->date_from) > time()) {
return Tools::displayError('This voucher is not yet valid');
}
if (strtotime($discountObj->date_to) < time()) {
return Tools::displayError('This voucher has expired.');
}
if (sizeof($discounts) >= 1 and $checkCartDiscount) {
if (!$discountObj->cumulable) {
return Tools::displayError('This voucher is not valid with other current discounts.');
}
foreach ($discounts as $discount) {
if (!$discount['cumulable']) {
return Tools::displayError('Voucher is not valid with other discounts.');
}
}
foreach ($discounts as $discount) {
if ($discount['id_discount'] == $discountObj->id) {
return Tools::displayError('This voucher is already in your cart');
}
}
}
$groups = Customer::getGroupsStatic($this->id_customer);
if (($discountObj->id_customer or $discountObj->id_group) and ($this->id_customer != $discountObj->id_customer and !in_array($discountObj->id_group, $groups))) {
if (!$cookie->isLogged()) {
return Tools::displayError('You cannot use this voucher.') . ' - ' . Tools::displayError('Please log in.');
}
return Tools::displayError('You cannot use this voucher.');
}
$currentDate = date('Y-m-d');
$onlyProductWithDiscount = true;
if (!$discountObj->cumulable_reduction) {
foreach ($products as $product) {
if (!$product['reduction_applies'] and !$product['on_sale']) {
$onlyProductWithDiscount = false;
}
}
}
if (!$discountObj->cumulable_reduction and $onlyProductWithDiscount) {
return Tools::displayError('This voucher is not valid for marked or reduced products.');
}
$total_cart = 0;
$categories = Discount::getCategories($discountObj->id);
$returnErrorNoProductCategory = true;
foreach ($products as $product) {
if (count($categories)) {
if (Product::idIsOnCategoryId($product['id_product'], $categories)) {
if (!$discountObj->cumulable_reduction and !$product['reduction_applies'] and !$product['on_sale'] or $discountObj->cumulable_reduction) {
$total_cart += $product['total_wt'];
}
$returnErrorNoProductCategory = false;
}
}
}
if (isset($discountObj->brands) && isset($discountObj->min_cart) && $discountObj->min_cart > 0) {
$cartTotalForBrands = $this->getCartTotalForBrands($discountObj->brands);
if ($cartTotalForBrands < $discountObj->min_cart) {
return Tools::displayError('This discount applies to products worth atleast ' . $discountObj->min_cart . ' of specific brands.');
}
}
if ($returnErrorNoProductCategory) {
return Tools::displayError('This discount does not apply to that product category.');
}
//conver total to USD
$total_cart = Tools::convertPrice($total_cart, $this->id_currency, false);
if ($total_cart < $discountObj->minimal) {
return Tools::displayError('The order total is not high enough or this voucher cannot be used with those products.');
}
return false;
}