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
public function readThemeActions()
{
$themeActionsFile = theme_path('functions.php');
- if (file_exists($themeActionsFile)) {
+ if ($themeActionsFile && file_exists($themeActionsFile)) {
require $themeActionsFile;
}
}
}
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);
}
/**
* 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));