Fixed issue with translation loading without theme

System was using the empty state return from theme_path,
when no theme was configured, for loading in languages
which would result in the root path being looked up upon.

This changes the theme_path helper to return null in cases a theme
is not configured instead of empty string to help prevent assumed
return path will be legitimate, and to help enforce error case
handling.

For #2836
This commit is contained in:
Dan Brown 2021-07-03 11:53:46 +01:00
parent 3dda622f0a
commit 4da72aa267
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
3 changed files with 7 additions and 4 deletions

View File

@ -45,7 +45,7 @@ class ThemeService
public function readThemeActions()
{
$themeActionsFile = theme_path('functions.php');
if (file_exists($themeActionsFile)) {
if ($themeActionsFile && file_exists($themeActionsFile)) {
require $themeActionsFile;
}
}

View File

@ -20,7 +20,8 @@ class FileLoader extends BaseLoader
}
if (is_null($namespace) || $namespace === '*') {
$themeTranslations = $this->loadPath(theme_path('lang'), $locale, $group);
$themePath = theme_path('lang');
$themeTranslations = $themePath ? $this->loadPath($themePath, $locale, $group) : [];
$originalTranslations = $this->loadPath($this->path, $locale, $group);
return array_merge($originalTranslations, $themeTranslations);
}

View File

@ -94,13 +94,15 @@ function setting(string $key = null, $default = null)
/**
* Get a path to a theme resource.
* Returns null if a theme is not configured and
* therefore a full path is not available for use.
*/
function theme_path(string $path = ''): string
function theme_path(string $path = ''): ?string
{
$theme = config('view.theme');
if (!$theme) {
return '';
return null;
}
return base_path('themes/' . $theme .($path ? DIRECTORY_SEPARATOR.$path : $path));