diff --git a/classes/Link.php b/classes/Link.php index 03cf66c36..27a87cda0 100644 --- a/classes/Link.php +++ b/classes/Link.php @@ -91,12 +91,8 @@ class LinkCore if (!$id_lang) $id_lang = Context::getContext()->language->id; - if (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') && $id_shop !== null) - $shop = new Shop($id_shop); - else - $shop = Context::getContext()->shop; - - $url = 'http://'.$shop->domain.$shop->getBaseURI().$this->getLangLink($id_lang, null, $id_shop); + + $url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop); if (!is_object($product)) { @@ -163,11 +159,7 @@ class LinkCore if (!$id_lang) $id_lang = Context::getContext()->language->id; - if ($id_shop === null) - $shop = Context::getContext()->shop; - else - $shop = new Shop($id_shop); - $url = 'http://'.$shop->domain.$shop->getBaseURI().$this->getLangLink($id_lang, null, $id_shop); + $url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop); if (!is_object($category)) $category = new Category($category, $id_lang); @@ -206,11 +198,7 @@ class LinkCore if (!$id_lang) $id_lang = Context::getContext()->language->id; - if ($id_shop === null) - $shop = Context::getContext()->shop; - else - $shop = new Shop($id_shop); - $url = 'http://'.$shop->domain.$shop->getBaseURI().$this->getLangLink($id_lang, null, $id_shop); + $url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop); $dispatcher = Dispatcher::getInstance(); if (!is_object($cms_category)) @@ -243,15 +231,8 @@ class LinkCore { if (!$id_lang) $id_lang = Context::getContext()->language->id; - - if ($id_shop === null) - $shop = Context::getContext()->shop; - else - $shop = new Shop($id_shop); - - $base = (($ssl && $this->ssl_enable) ? 'https://'.$shop->domain_ssl : 'http://'.$shop->domain); - $url = $base.$shop->getBaseURI().$this->getLangLink($id_lang, null, $id_shop); + $url = $this->getBaseLink($id_shop, $ssl).$this->getLangLink($id_lang, null, $id_shop); $dispatcher = Dispatcher::getInstance(); if (!is_object($cms)) @@ -290,11 +271,8 @@ class LinkCore if (!$id_lang) $id_lang = Context::getContext()->language->id; - if ($id_shop === null) - $shop = Context::getContext()->shop; - else - $shop = new Shop($id_shop); - $url = 'http://'.$shop->domain.$shop->getBaseURI().$this->getLangLink($id_lang, null, $id_shop); + + $url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop); $dispatcher = Dispatcher::getInstance(); if (!is_object($supplier)) @@ -327,11 +305,7 @@ class LinkCore if (!$id_lang) $id_lang = Context::getContext()->language->id; - if ($id_shop === null) - $shop = Context::getContext()->shop; - else - $shop = new Shop($id_shop); - $url = 'http://'.$shop->domain.$shop->getBaseURI().$this->getLangLink($id_lang, null, $id_shop); + $url = $this->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop); $dispatcher = Dispatcher::getInstance(); if (!is_object($manufacturer)) @@ -365,13 +339,7 @@ class LinkCore if (!$id_lang) $id_lang = Context::getContext()->language->id; - if ($id_shop === null) - $shop = Context::getContext()->shop; - else - $shop = new Shop($id_shop); - - $base = (($ssl && $this->ssl_enable) ? 'https://'.$shop->domain_ssl : 'http://'.$shop->domain); - $url = $base.$shop->getBaseURI().$this->getLangLink($id_lang, null, $id_shop); + $url = $this->getBaseLink($id_shop, $ssl).$this->getLangLink($id_lang, null, $id_shop); // If the module has its own route ... just use it ! if (Dispatcher::getInstance()->hasRoute('module-'.$module.'-'.$controller, $id_lang, $id_shop)) @@ -456,7 +424,6 @@ class LinkCore public function getPageLink($controller, $ssl = false, $id_lang = null, $request = null, $request_url_encode = false, $id_shop = null) { $controller = Tools::strReplaceFirst('.php', '', $controller); - if (!$id_lang) $id_lang = (int)Context::getContext()->language->id; @@ -469,17 +436,9 @@ class LinkCore parse_str($request, $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) ? 'https://'.$shop->domain_ssl : 'http://'.$shop->domain; - $url .= $shop->getBaseURI().$this->getLangLink($id_lang, null, $id_shop).ltrim($uri_path, '/'); - - return $url; + return $this->getBaseLink($id_shop, $ssl).$this->getLangLink($id_lang, null, $id_shop).ltrim($uri_path, '/'); } public function getCatImageLink($name, $id_category, $type = null) @@ -643,5 +602,17 @@ class LinkCore return Language::getIsoById($id_lang).'/'; } + + protected function getBaseLink($id_shop = null, $ssl = true) + { + if (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') && $id_shop !== null) + $shop = new Shop($id_shop); + else + $shop = Context::getContext()->shop; + + $base = (($ssl && $this->ssl_enable) ? 'https://'.$shop->domain_ssl : 'http://'.$shop->domain); + + return $base.$shop->getBaseURI(); + } } diff --git a/classes/controller/FrontController.php b/classes/controller/FrontController.php index 9725e99f1..ba0f850ff 100644 --- a/classes/controller/FrontController.php +++ b/classes/controller/FrontController.php @@ -65,6 +65,9 @@ class FrontControllerCore extends Controller parent::__construct(); + if (Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE')) + $this->ssl = true; + if (isset($useSSL)) $this->ssl = $useSSL; else @@ -597,7 +600,7 @@ class FrontControllerCore extends Controller if (!$canonical_url || !Configuration::get('PS_CANONICAL_REDIRECT') || strtoupper($_SERVER['REQUEST_METHOD']) != 'GET' || Tools::getValue('live_edit')) return; - $match_url = (($this->ssl && Configuration::get('PS_SSL_ENABLED')) ? 'https://' : 'http://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; + $match_url = (($this->ssl) ? 'https://' : 'http://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $match_url = rawurldecode($match_url); if (!preg_match('/^'.Tools::pRegexp(rawurldecode($canonical_url), '/').'([&?].*)?$/', $match_url)) { diff --git a/controllers/admin/AdminPreferencesController.php b/controllers/admin/AdminPreferencesController.php index f878f69fc..34a7e48e2 100644 --- a/controllers/admin/AdminPreferencesController.php +++ b/controllers/admin/AdminPreferencesController.php @@ -86,6 +86,19 @@ class AdminPreferencesControllerCore extends AdminController 'type' => 'bool', 'default' => '0' ), + ); + + if (Configuration::get('PS_SSL_ENABLED')) + $fields['PS_SSL_ENABLED_EVERYWHERE'] = array( + 'title' => $this->l('Force the SSL on all the pages'), + 'desc' => $this->l('Force all your store to use SSL'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool', + 'default' => '0' + ); + + $fields = array_merge($fields, array( 'PS_TOKEN_ENABLE' => array( 'title' => $this->l('Increase Front Office security'), 'desc' => $this->l('Enable or disable token in the Front Office to improve PrestaShop\'s security.'), @@ -135,7 +148,7 @@ class AdminPreferencesControllerCore extends AdminController 'list' => $activities2, 'identifier' => 'value' ), - ); + )); // No HTTPS activation if you haven't already. if (!Tools::usingSecureMode() && !Configuration::get('PS_SSL_ENABLED'))