1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-03 13:17:24 +02:00

Issue #2827 Support for multiple static domains for distributed static URLs.

This commit is contained in:
Cameron
2017-10-25 19:02:10 -07:00
parent 3668067bb1
commit 27910c87c7
3 changed files with 109 additions and 13 deletions

View File

@@ -4030,9 +4030,7 @@ class e107
return $this->e107_dirs[$dir.'_HTTP'];
}
$http = ($dir === "CACHE_IMAGE" && defined('e_MEDIA_STATIC') && defined('e_HTTP_STATIC')) ? e_HTTP_STATIC : e_HTTP;
return $http.$this->e107_dirs[$dir.'_DIRECTORY'];
return e_HTTP.$this->e107_dirs[$dir.'_DIRECTORY'];
}
/**

View File

@@ -62,6 +62,8 @@ class e_parse extends e_parser
private $thumbEncode = 0;
private $staticCount = 0;
// BBcode that contain preformatted code.
private $preformatted = array('html', 'markdown');
@@ -2568,6 +2570,90 @@ class e_parse extends e_parser
}
private function staticCount($val=false)
{
$count = $this->staticCount;
if($val === 0)
{
$this->staticCount = 0;
}
elseif($val !== false)
{
$this->staticCount = $this->staticCount + (int) $val;
}
return (int) $count;
}
/**
* @param string $path - absolute path
* @return string - static path.
*/
public function staticUrl($path=null)
{
if(!defined('e_HTTP_STATIC'))
{
return ($path === null) ? e_HTTP : $path;
}
$staticArray = e_HTTP_STATIC;
if(is_array($staticArray))
{
$cnt = count($staticArray);
$staticCount = $this->staticCount();
if($staticCount > ($cnt -1))
{
$staticCount = 0;
$this->staticCount(0);
}
$http = !empty($staticArray[$staticCount]) ? $staticArray[$staticCount] : e_HTTP;
}
else
{
$http = e_HTTP_STATIC;
}
$this->staticCount(1);
if(empty($path))
{
return $http;
}
$base = '';
$srch = array(
e_PLUGIN_ABS,
e_THEME_ABS,
e_WEB_ABS,
e_CACHE_IMAGE_ABS,
);
$repl = array(
$http.$base.e107::getFolder('plugins'),
$http.$base.e107::getFolder('themes'),
$http.$base.e107::getFolder('web'),
$http.$base.str_replace('../', '', e_CACHE_IMAGE),
);
$ret = str_replace($srch,$repl,$path);
return $ret;
}
/**
* Generate an auto-sized Image URL.
* @param $url - path to image or leave blank for a placeholder. eg. {e_MEDIA}folder/my-image.jpg
@@ -2584,6 +2670,8 @@ class e_parse extends e_parser
*/
public function thumbUrl($url=null, $options = array(), $raw = false, $full = false)
{
$this->staticCount++; // increment counter.
if(strpos($url,"{e_") === 0) // Fix for broken links that use {e_MEDIA} etc.
{
//$url = $this->replaceConstants($url,'abs');
@@ -2591,7 +2679,7 @@ class e_parse extends e_parser
$url = str_replace($this->getUrlConstants('sc'), $this->getUrlConstants('raw'), $url);
}
if(!is_array($options))
if(is_string($options))
{
parse_str($options, $options);
}
@@ -2617,7 +2705,7 @@ class e_parse extends e_parser
if(defined('e_HTTP_STATIC'))
{
$baseurl = e_HTTP_STATIC.'thumb.php?';
$baseurl = $this->staticUrl().'thumb.php?';
}
$thurl = 'src='.urlencode($url).'&';
@@ -2678,8 +2766,7 @@ class e_parse extends e_parser
if(!empty($staticFile) && is_readable(e_CACHE_IMAGE.$staticFile))
{
//file_put_contents(e_LOG."thumbCache.log",$staticFile."\n",FILE_APPEND);
return e_CACHE_IMAGE_ABS.$staticFile;
return $this->staticUrl(e_CACHE_IMAGE.$staticFile);
}
$options['nosef'] = true;
@@ -2834,7 +2921,7 @@ class e_parse extends e_parser
if(defined('e_HTTP_STATIC'))
{
$base = e_HTTP_STATIC;
$base = $this->staticUrl();
}
// $base = (!empty($options['full'])) ? SITEURL : e_HTTP;

View File

@@ -1400,13 +1400,19 @@ class e_jsmanager
}
private function url($path,$cacheId = true)
{
if((e_MOD_REWRITE_STATIC === true || defined('e_HTTP_STATIC')) && $this->isInAdmin() !== true)
/**
* Return the URL while checking for staticUrl configuration.
* @param $path
* @param bool $cacheId
* @return mixed|string
*/
private function url($path, $cacheId = true)
{
$srch = array(
if(/*(e_MOD_REWRITE_STATIC === true || defined('e_HTTP_STATIC')) &&*/ $this->isInAdmin() !== true)
{
/* $srch = array(
e_PLUGIN_ABS,
e_THEME_ABS,
e_WEB_ABS
@@ -1430,10 +1436,15 @@ class e_jsmanager
return trim($folder);
}
$path = $folder;
$path = $folder;*/
$path = e107::getParser()->staticUrl($path);
}
if(strpos($path,'?')!==false)
{
$path .= "&".$this->getCacheId();