[*] Core: that is now easier to get links for another shop
This commit is contained in:
+75
-39
@@ -91,7 +91,7 @@ class LinkCore
|
||||
if (!$id_lang)
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
|
||||
if (!$id_shop)
|
||||
if ($id_shop === null)
|
||||
$shop = Context::getContext()->shop;
|
||||
else
|
||||
$shop = new Shop($id_shop);
|
||||
@@ -117,25 +117,25 @@ class LinkCore
|
||||
$params['meta_keywords'] = Tools::str2url($product->getFieldByLang('meta_keywords'));
|
||||
$params['meta_title'] = Tools::str2url($product->getFieldByLang('meta_title'));
|
||||
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'manufacturer'))
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'manufacturer', $id_shop))
|
||||
$params['manufacturer'] = Tools::str2url($product->isFullyLoaded ? $product->manufacturer_name : Manufacturer::getNameById($product->id_manufacturer));
|
||||
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'supplier'))
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'supplier', $id_shop))
|
||||
$params['supplier'] = Tools::str2url($product->isFullyLoaded ? $product->supplier_name : Supplier::getNameById($product->id_supplier));
|
||||
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'price'))
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'price', $id_shop))
|
||||
$params['price'] = $product->isFullyLoaded ? $product->price : Product::getPriceStatic($product->id, false, null, 6, null, false, true, 1, false, null, null, null, $product->specificPrice);
|
||||
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'tags'))
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'tags', $id_shop))
|
||||
$params['tags'] = Tools::str2url($product->getTags($id_lang));
|
||||
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'category'))
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'category', $id_shop))
|
||||
$params['category'] = (!is_null($product->category) && !empty($product->category)) ? Tools::str2url($product->category) : Tools::str2url($category);
|
||||
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'reference'))
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'reference', $id_shop))
|
||||
$params['reference'] = Tools::str2url($product->reference);
|
||||
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'categories'))
|
||||
if ($dispatcher->hasKeyword('product_rule', $id_lang, 'categories', $id_shop))
|
||||
{
|
||||
$params['category'] = (!$category) ? $product->category : $category;
|
||||
$cats = array();
|
||||
@@ -146,7 +146,7 @@ class LinkCore
|
||||
}
|
||||
$anchor = $ipa ? $product->getAnchor($ipa) : '';
|
||||
|
||||
return $url.$dispatcher->createUrl('product_rule', $id_lang, $params, $force_routes, $anchor);
|
||||
return $url.$dispatcher->createUrl('product_rule', $id_lang, $params, $force_routes, $anchor, $id_shop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -158,11 +158,16 @@ class LinkCore
|
||||
* @param string $selected_filters Url parameter to autocheck filters of the module blocklayered
|
||||
* @return string
|
||||
*/
|
||||
public function getCategoryLink($category, $alias = null, $id_lang = null, $selected_filters = null)
|
||||
public function getCategoryLink($category, $alias = null, $id_lang = null, $selected_filters = null, $id_shop = null)
|
||||
{
|
||||
if (!$id_lang)
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
$url = _PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink($id_lang);
|
||||
|
||||
if ($id_shop === null)
|
||||
$shop = Context::getContext()->shop;
|
||||
else
|
||||
$shop = new Shop($id_shop);
|
||||
$url = 'http://'.$shop->domain.$shop->getBaseURI().$this->getLangLink($id_lang);
|
||||
|
||||
if (!is_object($category))
|
||||
$category = new Category($category, $id_lang);
|
||||
@@ -185,7 +190,7 @@ class LinkCore
|
||||
$params['selected_filters'] = $selected_filters;
|
||||
}
|
||||
|
||||
return $url.Dispatcher::getInstance()->createUrl($rule, $id_lang, $params, $this->allow);
|
||||
return $url.Dispatcher::getInstance()->createUrl($rule, $id_lang, $params, $this->allow, '', $id_shop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -196,17 +201,22 @@ class LinkCore
|
||||
* @param int $id_lang
|
||||
* @return string
|
||||
*/
|
||||
public function getCMSCategoryLink($cms_category, $alias = null, $id_lang = null)
|
||||
public function getCMSCategoryLink($cms_category, $alias = null, $id_lang = null, $id_shop = null)
|
||||
{
|
||||
if (!$id_lang)
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
$url = _PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink($id_lang);
|
||||
|
||||
if ($id_shop === null)
|
||||
$shop = Context::getContext()->shop;
|
||||
else
|
||||
$shop = new Shop($id_shop);
|
||||
$url = 'http://'.$shop->domain.$shop->getBaseURI().$this->getLangLink($id_lang);
|
||||
|
||||
$dispatcher = Dispatcher::getInstance();
|
||||
if (!is_object($cms_category))
|
||||
{
|
||||
if ($alias !== null && !$dispatcher->hasKeyword('cms_category_rule', $id_lang, 'meta_keywords') && !$dispatcher->hasKeyword('cms_category_rule', $id_lang, 'meta_title'))
|
||||
return $url.$dispatcher->createUrl('cms_category_rule', $id_lang, array('id' => (int)$cms_category, 'rewrite' => (string)$alias), $this->allow);
|
||||
if ($alias !== null && !$dispatcher->hasKeyword('cms_category_rule', $id_lang, 'meta_keywords', $id_shop) && !$dispatcher->hasKeyword('cms_category_rule', $id_lang, 'meta_title', $id_shop))
|
||||
return $url.$dispatcher->createUrl('cms_category_rule', $id_lang, array('id' => (int)$cms_category, 'rewrite' => (string)$alias), $this->allow, '', $id_shop);
|
||||
$cms_category = new CMSCategory($cms_category, $id_lang);
|
||||
}
|
||||
|
||||
@@ -217,7 +227,7 @@ class LinkCore
|
||||
$params['meta_keywords'] = Tools::str2url($cms_category->meta_keywords);
|
||||
$params['meta_title'] = Tools::str2url($cms_category->meta_title);
|
||||
|
||||
return $url.$dispatcher->createUrl('cms_category_rule', $id_lang, $params, $this->allow);
|
||||
return $url.$dispatcher->createUrl('cms_category_rule', $id_lang, $params, $this->allow, '', $id_shop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -229,19 +239,25 @@ class LinkCore
|
||||
* @param int $id_lang
|
||||
* @return string
|
||||
*/
|
||||
public function getCMSLink($cms, $alias = null, $ssl = false, $id_lang = null)
|
||||
public function getCMSLink($cms, $alias = null, $ssl = false, $id_lang = null, $id_shop = null)
|
||||
{
|
||||
$base = (($ssl && $this->ssl_enable) ? _PS_BASE_URL_SSL_ : _PS_BASE_URL_);
|
||||
|
||||
if (!$id_lang)
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
$url = $base.__PS_BASE_URI__.$this->getLangLink($id_lang);
|
||||
|
||||
if ($id_shop === null)
|
||||
$shop = Context::getContext()->shop;
|
||||
else
|
||||
$shop = new Shop($id_shop);
|
||||
$url = $base.$shop->domain.$shop->getBaseURI().$this->getLangLink($id_lang);
|
||||
|
||||
|
||||
$dispatcher = Dispatcher::getInstance();
|
||||
if (!is_object($cms))
|
||||
{
|
||||
if ($alias !== null && !$dispatcher->hasKeyword('cms_rule', $id_lang, 'meta_keywords') && !$dispatcher->hasKeyword('cms_rule', $id_lang, 'meta_title'))
|
||||
return $url.$dispatcher->createUrl('cms_rule', $id_lang, array('id' => (int)$cms, 'rewrite' => (string)$alias), $this->allow);
|
||||
if ($alias !== null && !$dispatcher->hasKeyword('cms_rule', $id_lang, 'meta_keywords', $id_shop) && !$dispatcher->hasKeyword('cms_rule', $id_lang, 'meta_title', $id_shop))
|
||||
return $url.$dispatcher->createUrl('cms_rule', $id_lang, array('id' => (int)$cms, 'rewrite' => (string)$alias), $this->allow, '', $id_shop);
|
||||
$cms = new CMS($cms, $id_lang);
|
||||
}
|
||||
|
||||
@@ -258,7 +274,7 @@ class LinkCore
|
||||
if (isset($cms->meta_title) && !empty($cms->meta_title))
|
||||
$params['meta_title'] = is_array($cms->meta_title) ? Tools::str2url($cms->meta_title[(int)$id_lang]) : Tools::str2url($cms->meta_title);
|
||||
|
||||
return $url.$dispatcher->createUrl('cms_rule', $id_lang, $params, $this->allow);
|
||||
return $url.$dispatcher->createUrl('cms_rule', $id_lang, $params, $this->allow, '', $id_shop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -269,17 +285,22 @@ class LinkCore
|
||||
* @param int $id_lang
|
||||
* @return string
|
||||
*/
|
||||
public function getSupplierLink($supplier, $alias = null, $id_lang = null)
|
||||
public function getSupplierLink($supplier, $alias = null, $id_lang = null, $id_shop = null)
|
||||
{
|
||||
if (!$id_lang)
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
$url = _PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink($id_lang);
|
||||
|
||||
if ($id_shop === null)
|
||||
$shop = Context::getContext()->shop;
|
||||
else
|
||||
$shop = new Shop($id_shop);
|
||||
$url = 'http://'.$shop->domain.$shop->getBaseURI().$this->getLangLink($id_lang);
|
||||
|
||||
$dispatcher = Dispatcher::getInstance();
|
||||
if (!is_object($supplier))
|
||||
{
|
||||
if ($alias !== null && !$dispatcher->hasKeyword('supplier_rule', $id_lang, 'meta_keywords') && !$dispatcher->hasKeyword('supplier_rule', $id_lang, 'meta_title'))
|
||||
return $url.$dispatcher->createUrl('supplier_rule', $id_lang, array('id' => (int)$supplier, 'rewrite' => (string)$alias), $this->allow);
|
||||
if ($alias !== null && !$dispatcher->hasKeyword('supplier_rule', $id_lang, 'meta_keywords', $id_shop) && !$dispatcher->hasKeyword('supplier_rule', $id_lang, 'meta_title', $id_shop))
|
||||
return $url.$dispatcher->createUrl('supplier_rule', $id_lang, array('id' => (int)$supplier, 'rewrite' => (string)$alias), $this->allow, '', $id_shop);
|
||||
$supplier = new Supplier($supplier, $id_lang);
|
||||
}
|
||||
|
||||
@@ -290,7 +311,7 @@ class LinkCore
|
||||
$params['meta_keywords'] = Tools::str2url($supplier->meta_keywords);
|
||||
$params['meta_title'] = Tools::str2url($supplier->meta_title);
|
||||
|
||||
return $url.$dispatcher->createUrl('supplier_rule', $id_lang, $params, $this->allow);
|
||||
return $url.$dispatcher->createUrl('supplier_rule', $id_lang, $params, $this->allow, '', $id_shop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -301,17 +322,22 @@ class LinkCore
|
||||
* @param int $id_lang
|
||||
* @return string
|
||||
*/
|
||||
public function getManufacturerLink($manufacturer, $alias = null, $id_lang = null)
|
||||
public function getManufacturerLink($manufacturer, $alias = null, $id_lang = null, $id_shop = null)
|
||||
{
|
||||
if (!$id_lang)
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
$url = _PS_BASE_URL_.__PS_BASE_URI__.$this->getLangLink($id_lang);
|
||||
|
||||
if ($id_shop === null)
|
||||
$shop = Context::getContext()->shop;
|
||||
else
|
||||
$shop = new Shop($id_shop);
|
||||
$url = 'http://'.$shop->domain.$shop->getBaseURI().$this->getLangLink($id_lang);
|
||||
|
||||
$dispatcher = Dispatcher::getInstance();
|
||||
if (!is_object($manufacturer))
|
||||
{
|
||||
if ($alias !== null && !$dispatcher->hasKeyword('manufacturer_rule', $id_lang, 'meta_keywords') && !$dispatcher->hasKeyword('manufacturer_rule', $id_lang, 'meta_title'))
|
||||
return $url.$dispatcher->createUrl('manufacturer_rule', $id_lang, array('id' => (int)$manufacturer, 'rewrite' => (string)$alias), $this->allow);
|
||||
if ($alias !== null && !$dispatcher->hasKeyword('manufacturer_rule', $id_lang, 'meta_keywords', $id_shop) && !$dispatcher->hasKeyword('manufacturer_rule', $id_lang, 'meta_title', $id_shop))
|
||||
return $url.$dispatcher->createUrl('manufacturer_rule', $id_lang, array('id' => (int)$manufacturer, 'rewrite' => (string)$alias), $this->allow, '', $id_shop);
|
||||
$manufacturer = new Manufacturer($manufacturer, $id_lang);
|
||||
}
|
||||
|
||||
@@ -322,7 +348,7 @@ class LinkCore
|
||||
$params['meta_keywords'] = Tools::str2url($manufacturer->meta_keywords);
|
||||
$params['meta_title'] = Tools::str2url($manufacturer->meta_title);
|
||||
|
||||
return $url.$dispatcher->createUrl('manufacturer_rule', $id_lang, $params, $this->allow);
|
||||
return $url.$dispatcher->createUrl('manufacturer_rule', $id_lang, $params, $this->allow, '', $id_shop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -334,23 +360,28 @@ class LinkCore
|
||||
* @param int $id_lang
|
||||
* @return string
|
||||
*/
|
||||
public function getModuleLink($module, $controller = 'default', array $params = array(), $ssl = false, $id_lang = null)
|
||||
public function getModuleLink($module, $controller = 'default', array $params = array(), $ssl = false, $id_lang = null, $id_shop = null)
|
||||
{
|
||||
$base = (($ssl && $this->ssl_enable) ? _PS_BASE_URL_SSL_ : _PS_BASE_URL_);
|
||||
|
||||
if (!$id_lang)
|
||||
$id_lang = Context::getContext()->language->id;
|
||||
$url = $base.__PS_BASE_URI__.$this->getLangLink($id_lang);
|
||||
|
||||
if ($id_shop === null)
|
||||
$shop = Context::getContext()->shop;
|
||||
else
|
||||
$shop = new Shop($id_shop);
|
||||
$url = $base.$shop->domain.$shop->getBaseURI().$this->getLangLink($id_lang);
|
||||
|
||||
// Set available keywords
|
||||
$params['module'] = $module;
|
||||
$params['controller'] = $controller ? $controller : 'default';
|
||||
|
||||
// If the module has its own route ... just use it !
|
||||
if (Dispatcher::getInstance()->hasRoute('module-'.$module.'-'.$controller, $id_lang))
|
||||
if (Dispatcher::getInstance()->hasRoute('module-'.$module.'-'.$controller, $id_lang, $id_shop))
|
||||
return $this->getPageLink('module-'.$module.'-'.$controller, $ssl, $id_lang, $params);
|
||||
else
|
||||
return $url.Dispatcher::getInstance()->createUrl('module', $id_lang, $params, $this->allow);
|
||||
return $url.Dispatcher::getInstance()->createUrl('module', $id_lang, $params, $this->allow, '', $id_shop);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -421,7 +452,7 @@ class LinkCore
|
||||
*
|
||||
* @return string Page link
|
||||
*/
|
||||
public function getPageLink($controller, $ssl = false, $id_lang = null, $request = null, $request_url_encode = false)
|
||||
public function getPageLink($controller, $ssl = false, $id_lang = null, $request = null, $request_url_encode = false, $id_shop = null)
|
||||
{
|
||||
$controller = Tools::strReplaceFirst('.php', '', $controller);
|
||||
|
||||
@@ -437,9 +468,14 @@ class LinkCore
|
||||
parse_str($request, $request);
|
||||
}
|
||||
|
||||
$uri_path = Dispatcher::getInstance()->createUrl($controller, $id_lang, $request);
|
||||
if ($id_shop === null)
|
||||
$shop = Context::getContext()->shop;
|
||||
else
|
||||
$shop = new Shop($id_shop);
|
||||
|
||||
$uri_path = Dispatcher::getInstance()->createUrl($controller, $id_lang, $request, false, '', $id_shop);
|
||||
$url = ($ssl && $this->ssl_enable) ? Tools::getShopDomainSsl(true) : Tools::getShopDomain(true);
|
||||
$url .= __PS_BASE_URI__.$this->getLangLink($id_lang).ltrim($uri_path, '/');
|
||||
$url .= $shop->domain.$shop->getBaseURI().$this->getLangLink($id_lang).ltrim($uri_path, '/');
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user