190 lines
7.4 KiB
PHP
190 lines
7.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Link class, Link.php
|
|
* Links management
|
|
* @category classes
|
|
*
|
|
* @author PrestaShop <support@prestashop.com>
|
|
* @copyright PrestaShop
|
|
* @license http://www.opensource.org/licenses/osl-3.0.php Open-source licence 3.0
|
|
* @version 1.3
|
|
*
|
|
*/
|
|
|
|
class Link
|
|
{
|
|
/** @var boolean Rewriting activation */
|
|
private $allow;
|
|
private $url;
|
|
|
|
/**
|
|
* Constructor (initialization only)
|
|
*/
|
|
function __construct()
|
|
{
|
|
$this->allow = intval(Configuration::get('PS_REWRITING_SETTINGS'));
|
|
$this->url = $_SERVER['SCRIPT_NAME'];
|
|
}
|
|
|
|
/**
|
|
* Return the correct link for product/category/supplier/manufacturer
|
|
*
|
|
* @param mixed $id_OBJ Can be either the object or the ID only
|
|
* @param string $alias Friendly URL (only if $id_OBJ is the object)
|
|
* @return string link
|
|
*/
|
|
public function getProductLink($id_product, $alias = NULL, $category = NULL, $ean13 = NULL)
|
|
{
|
|
if (!isset($this->allow)) $this->allow = 0;
|
|
if (is_object($id_product))
|
|
return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.(($id_product->category != 'home' AND !empty($id_product->category)) ? $id_product->category.'/' : '').intval($id_product->id).'-'.$id_product->link_rewrite.($id_product->ean13 ? '-'.$id_product->ean13 : '').'.html') :
|
|
(_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product->id));
|
|
elseif ($alias)
|
|
return ($this->allow == 1)?(_PS_BASE_URL_.__PS_BASE_URI__.(($category AND $category != 'home') ? ($category.'/') : '').intval($id_product).'-'.$alias.($ean13 ? '-'.$ean13 : '').'.html') :
|
|
(_PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product));
|
|
else
|
|
return _PS_BASE_URL_.__PS_BASE_URI__.'product.php?id_product='.intval($id_product);
|
|
}
|
|
|
|
public function getCategoryLink($id_category, $alias = NULL)
|
|
{
|
|
if (is_object($id_category))
|
|
return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.intval($id_category->id).'-'.$id_category->link_rewrite) :
|
|
(_PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.intval($id_category->id));
|
|
if ($alias)
|
|
return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.intval($id_category).'-'.$alias) :
|
|
(_PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.intval($id_category));
|
|
return _PS_BASE_URL_.__PS_BASE_URI__.'category.php?id_category='.intval($id_category);
|
|
}
|
|
|
|
public function getCMSLink($cms, $alias = null)
|
|
{
|
|
if (is_object($cms))
|
|
return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.'content/'.intval($cms->id).'-'.$cms->link_rewrite) :
|
|
(_PS_BASE_URL_.__PS_BASE_URI__.'cms.php?id_cms='.intval($cms->id));
|
|
if ($alias)
|
|
return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.'content/'.intval($cms).'-'.$alias) :
|
|
(_PS_BASE_URL_.__PS_BASE_URI__.'cms.php?id_cms='.intval($cms));
|
|
return _PS_BASE_URL_.__PS_BASE_URI__.'cms.php?id_cms='.intval($cms);
|
|
}
|
|
|
|
public function getSupplierLink($id_supplier, $alias = NULL)
|
|
{
|
|
if (is_object($id_supplier))
|
|
return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.intval($id_supplier->id).'__'.$id_supplier->link_rewrite) :
|
|
(_PS_BASE_URL_.__PS_BASE_URI__.'supplier.php?id_supplier='.intval($id_supplier->id));
|
|
if ($alias)
|
|
return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.intval($id_supplier).'__'.$alias) :
|
|
(_PS_BASE_URL_.__PS_BASE_URI__.'supplier.php?id_supplier='.intval($id_supplier));
|
|
return _PS_BASE_URL_.__PS_BASE_URI__.'supplier.php?id_supplier='.intval($id_supplier);
|
|
}
|
|
|
|
public function getManufacturerLink($id_manufacturer, $alias = NULL)
|
|
{
|
|
if (is_object($id_manufacturer))
|
|
return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.intval($id_manufacturer->id).'_'.$id_manufacturer->link_rewrite) :
|
|
(_PS_BASE_URL_.__PS_BASE_URI__.'manufacturer.php?id_manufacturer='.intval($id_manufacturer->id));
|
|
if ($alias)
|
|
return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.intval($id_manufacturer).'_'.$alias) :
|
|
(_PS_BASE_URL_.__PS_BASE_URI__.'manufacturer.php?id_manufacturer='.intval($id_manufacturer));
|
|
return _PS_BASE_URL_.__PS_BASE_URI__.'manufacturer.php?id_manufacturer='.intval($id_manufacturer);
|
|
}
|
|
|
|
public function getCustomLink($id_custom, $page, $prefix = '~', $alias = NULL)
|
|
{
|
|
if (is_object($id_custom))
|
|
return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.intval($id_custom->id).$prefix.$id_custom->link_rewrite) :
|
|
(_PS_BASE_URL_.__PS_BASE_URI__.$page.'?id_custom='.intval($id_custom->id));
|
|
if ($alias)
|
|
return ($this->allow == 1) ? (_PS_BASE_URL_.__PS_BASE_URI__.intval($id_custom).$prefix.$alias) :
|
|
(_PS_BASE_URL_.__PS_BASE_URI__.$page.'?id_custom='.intval($id_custom));
|
|
return _PS_BASE_URL_.__PS_BASE_URI__.$page.'?id_custom='.intval($id_custom);
|
|
}
|
|
|
|
public function getImageLink($name, $ids, $type = null)
|
|
{
|
|
return ($this->allow == 1) ? (__PS_BASE_URI__.$ids.($type ? '-'.$type : '').'/'.$name.'.jpg') : (_THEME_PROD_DIR_.$ids.($type ? '-'.$type : '').'.jpg');
|
|
}
|
|
|
|
public function getCatImageLink($name, $id_category, $type = null)
|
|
{
|
|
return ($this->allow == 1) ? (__PS_BASE_URI__.$id_category.($type ? '-'.$type : '').'/'.$name.'.jpg') : (_THEME_CAT_DIR_.$id_category.($type ? '-'.$type : '').'.jpg');
|
|
}
|
|
|
|
|
|
/**
|
|
* Create link after language change
|
|
*
|
|
* @param integer $id_lang Language ID
|
|
* @return string link
|
|
*/
|
|
public function getLanguageLink($id_lang)
|
|
{
|
|
if ($this->allow == 1)
|
|
return __PS_BASE_URI__.'lang-'.Language::getIsoById($id_lang).'/'.substr(preg_replace('#/lang-([a-z]{2})/#', '/', $_SERVER['REQUEST_URI']), strlen(__PS_BASE_URI__));
|
|
else
|
|
return $this->getUrlWith('id_lang', intval($id_lang));
|
|
}
|
|
|
|
public function getLanguageLinkAdmin($id_lang)
|
|
{
|
|
return $this->getUrlWith('id_lang', intval($id_lang));
|
|
}
|
|
|
|
public function getUrlWith($key, $val)
|
|
{
|
|
$n = 0;
|
|
$url = htmlentities($this->url, ENT_QUOTES, 'UTF-8');
|
|
|
|
foreach ($_GET as $k => $value)
|
|
// adminlang is an hand-written param in BO
|
|
if ($k != 'adminlang')
|
|
if (!is_array($value) AND $k != $key AND Tools::isSubmit($k))
|
|
$url .= ((!$n++) ? '?' : '&').urlencode($k).($value ? '='.urlencode($value) : '');
|
|
|
|
return $url.($n ? '&' : '?').urlencode($key).'='.urlencode($val);
|
|
}
|
|
|
|
public function goPage($url, $p)
|
|
{
|
|
return $url.($p == 1 ? '' : (!strstr($url, '?') ? '?' : '&').'p='.intval($p));
|
|
}
|
|
|
|
public function getPaginationLink($type, $id_object, $nb = FALSE, $sort = FALSE, $pagination = FALSE, $array = FALSE)
|
|
{
|
|
if ($type AND $id_object)
|
|
$url = $this->{'get'.$type.'Link'}($id_object, NULL);
|
|
else
|
|
$url = $this->url;
|
|
$vars = (!$array ? '' : array());
|
|
$varsNb = array('n', 'search_query');
|
|
$varsSort = array('orderby', 'orderway');
|
|
$varsPagination = array('p');
|
|
$varsVarious = array('search_query');
|
|
|
|
foreach ($_GET as $k => $value)
|
|
if ($k != 'id_'.$type)
|
|
{
|
|
$ifNb = (!$nb OR ($nb AND !in_array($k, $varsNb)));
|
|
$ifSort = (!$sort OR ($sort AND !in_array($k, $varsSort)));
|
|
$ifPagination = (!$pagination OR ($pagination AND !in_array($k, $varsPagination)));
|
|
if ($ifNb AND $ifSort AND $ifPagination AND !is_array($value))
|
|
!$array ? ($vars .= ((!$n++ AND ($this->allow == 1 OR $url == $this->url)) ? '?' : '&').urlencode($k).'='.urlencode($value)) : ($vars[urlencode($k)] = urlencode($value));
|
|
}
|
|
if (!$array)
|
|
return $url.$vars;
|
|
$vars['requestUrl'] = $url;
|
|
if ($type AND $id_object)
|
|
$vars['id_'.$type] = (is_object($id_object) ? intval($id_object->id) : intval($id_object));
|
|
return $vars;
|
|
}
|
|
|
|
public function addSortDetails($url, $orderby, $orderway)
|
|
{
|
|
return $url.(!strstr($url, '?') ? '?' : '&').'orderby='.urlencode($orderby).'&orderway='.urlencode($orderway);
|
|
}
|
|
}
|
|
|
|
?>
|