Files
2024-11-05 12:22:50 +01:00

132 lines
4.6 KiB
PHP

<?php
/**
* 2007-2015 Leotheme
*
* NOTICE OF LICENSE
*
* Content Management
*
* DISCLAIMER
*
* @author leotheme <leotheme@gmail.com>
* @copyright 2007-2015 Leotheme
* @license http://leotheme.com - prestashop template provider
*/
class LeoBlogLink extends Link
{
/**
* Create a link to a module
*
* @since 1.5.0
* @param string $module Module name
* @param string $process Action name
* @param int $id_lang
* @return string
* Get link of ROOT_BLOG "Show All"
*/
public function getLink($route_id, $controller = 'default', array $params = array(), $ssl = null, $id_lang = null, $id_shop = null)
{
# validate module
unset($controller);
if (!$id_lang) {
$id_lang = Context::getContext()->language->id;
}
$url = $this->getBaseLink($id_shop, $ssl).$this->getLangLink($id_lang, null, $id_shop);
return $url.Dispatcher::getInstance()->createUrl($route_id, $id_lang, $params, $this->allow, '', $id_shop);
}
public function getLeoblogLink($id_object, $controller, $params = array())
{
return $this->getLink($id_object, $controller, $params);
}
/**
* Get pagination link
*
* @param string $type Controller name
* @param int $id_object
* @param boolean $nb Show nb element per page attribute
* @param boolean $sort Show sort attribute
* @param boolean $pagination Show page number attribute
* @param boolean $array If false return an url, if true return an array
*/
public function getLeoPaginationLink($type, $id_object, $controller, $params, $nb = false, $sort = false, $pagination = false, $array = true)
{
// If no parameter $type, try to get it by using the controller name
if (!$type && !$id_object) {
$method_name = 'get'.Dispatcher::getInstance()->getController().'Link';
if (method_exists($this, $method_name) && Tools::getIsset(Tools::getValue('id_'.Dispatcher::getInstance()->getController()))) {
$type = Dispatcher::getInstance()->getController();
$id_object = Tools::getValue('id_'.$type);
}
}
if ($type && $id_object) {
$url = $this->{'get'.$type.'Link'}($id_object, $controller, $params);
} else {
if (isset(Context::getContext()->controller->php_self)) {
$name = Context::getContext()->controller->php_self;
} else {
$name = Dispatcher::getInstance()->getController();
}
$url = $this->getPageLink($name);
}
$vars = array();
$vars_nb = array('n', 'search_query');
$vars_sort = array('orderby', 'orderway');
$vars_pagination = array('p');
$get = array();
$get['isolang'] = Tools::getValue('isolang');
$get['id_lang'] = Tools::getValue('id_lang');
$get['id'] = Tools::getValue('id');
$get['fc'] = Tools::getValue('fc');
$get['module'] = Tools::getValue('module');
$get['controller'] = Tools::getValue('controller');
foreach ($get as $k => $value) {
if ($k != 'id_'.$type && $k != 'controller') {
if (Configuration::get('PS_REWRITING_SETTINGS') && ($k == 'isolang' || $k == 'id_lang')) {
continue;
}
$if_nb = (!$nb || ($nb && !in_array($k, $vars_nb)));
$if_sort = (!$sort || ($sort && !in_array($k, $vars_sort)));
$if_pagination = (!$pagination || ($pagination && !in_array($k, $vars_pagination)));
if ($if_nb && $if_sort && $if_pagination) {
if (!is_array($value)) {
$vars[urlencode($k)] = $value;
} else {
foreach (explode('&', http_build_query(array($k => $value), '', '&')) as $val) {
$data = explode('=', $val);
$vars[urldecode($data[0])] = $data[1];
}
}
}
}
}
if (!$array) {
if (count($vars)) {
return $url.(($this->allow == 1 || $url == $this->url) ? '?' : '&').http_build_query($vars, '', '&');
} else {
return $url;
}
}
$vars['requestUrl'] = $url;
if ($type && $id_object) {
$vars['id_'.$type] = (is_object($id_object) ? (int)$id_object->id : (int)$id_object);
}
if (!$this->allow == 1) {
$vars['controller'] = Dispatcher::getInstance()->getController();
}
return $vars;
}
}