AntonLV 8 роки тому
батько
коміт
d5cb94ab92

+ 20 - 9
inc/classes/BxDolPermalinks.php

@@ -165,6 +165,13 @@ class BxDolPermalinks extends BxDolDb implements iBxDolSingleton
         if (null !== $sRet)
             return $sRet;
 
+        $sPrefix = '';
+        if(strncmp($sLink, BX_DOL_URL_ROOT, strlen(BX_DOL_URL_ROOT)) === 0) {
+            $sPrefix = BX_DOL_URL_ROOT;
+
+            $sLink = substr($sLink, strlen($sPrefix));
+        }
+            
         $sLink = $this->_fixUrl($sLink);
 
         foreach ($this->aPrefixesStandard as $sKey => $iLength) {
@@ -179,11 +186,11 @@ class BxDolPermalinks extends BxDolDb implements iBxDolSingleton
 
             $sUrl = $this->_fixUrlAmpersand($this->aLinksStandard[$sKey]['permalink'] . $sPage);
 
-            return bx_append_url_params($sUrl, $aParams);
+            return $sPrefix . bx_append_url_params($sUrl, $aParams);
 
         }
 
-        return bx_append_url_params($this->_isEnabled($sLink) ? $this->aLinksStandard[$sLink]['permalink'] : $sLink, $aParams);
+        return $sPrefix . bx_append_url_params($this->_isEnabled($sLink) ? $this->aLinksStandard[$sLink]['permalink'] : $sLink, $aParams);
     }
 
     /**
@@ -194,14 +201,18 @@ class BxDolPermalinks extends BxDolDb implements iBxDolSingleton
      */
     function unpermalink($sLink, $isStripBaseUrl = true)
     {
-        if ($isStripBaseUrl && 0 === strncmp($sLink, BX_DOL_URL_ROOT, strlen(BX_DOL_URL_ROOT)))
-            $sLink = substr($sLink, strlen(BX_DOL_URL_ROOT));
-
         $sRet = null;
-        bx_alert('system', 'unpermalink', 0, 0, array('link' => $sLink, 'return_data' => &$sRet));
+        bx_alert('system', 'unpermalink', 0, 0, array('link' => $sLink, 'strip_base_url' => $isStripBaseUrl, 'return_data' => &$sRet));
         if (null !== $sRet)
             return $sRet;
 
+        $sPrefix = '';
+        if(!$isStripBaseUrl)
+            $sPrefix = BX_DOL_URL_ROOT;
+
+        if(strncmp($sLink, BX_DOL_URL_ROOT, strlen(BX_DOL_URL_ROOT)) === 0)
+            $sLink = substr($sLink, strlen(BX_DOL_URL_ROOT));
+
         foreach ($this->aPrefixesPermalink as $sKey => $iLength) {
 
             if (strncmp($sLink, $sKey, $iLength) !== 0)
@@ -209,16 +220,16 @@ class BxDolPermalinks extends BxDolDb implements iBxDolSingleton
 
             $sPage = substr($sLink, $iLength);
 
-            return $this->aLinksPermalink[$sKey]['standard'] . $sPage;
+            return $sPrefix . $this->aLinksPermalink[$sKey]['standard'] . $sPage;
 
         }
 
-        return isset($this->aLinksPermalink[$sLink]) ? $this->aLinksPermalink[$sLink]['standard'] : $sLink;
+        return $sPrefix . (isset($this->aLinksPermalink[$sLink]) ? $this->aLinksPermalink[$sLink]['standard'] : $sLink);
     }
 
     function _isEnabled($sLink)
     {
-        return array_key_exists($sLink, $this->aLinksStandard) && $this->aLinksStandard[$sLink]['enabled'];
+        return !empty($sLink) && array_key_exists($sLink, $this->aLinksStandard) && $this->aLinksStandard[$sLink]['enabled'];
     }
 
     /**

+ 2 - 2
template/scripts/BxBaseMenuSwitchLanguage.php

@@ -53,7 +53,7 @@ class BxBaseMenuSwitchLanguage extends BxTemplMenu
                 'title' => $this->$sMethod($sName, $sLang),
                 'target' => '_self',
                 'icon' => '',
-                'link' => bx_html_attribute(bx_append_url_params($oPermalink->permalink($sPageLink), $aPageParams)),
+                'link' => bx_html_attribute($oPermalink->permalink(bx_append_url_params($sPageLink, $aPageParams))),
                 'onclick' => ''
             );
         }
@@ -85,7 +85,7 @@ class BxBaseMenuSwitchLanguage extends BxTemplMenu
 
     protected function getBaseUrl($sPageLink)
     {
-        $sPageLink = BxDolPermalinks::getInstance()->unpermalink($sPageLink);
+        $sPageLink = BxDolPermalinks::getInstance()->unpermalink($sPageLink, false);
 
         $sPageParams = '';
         if(strpos($sPageLink, '?') !== false)