mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-08-07 23:03:00 +03:00
Added control-upon-access of the default favicon.ico file
This commit is contained in:
@@ -136,7 +136,7 @@ class HomeController extends Controller
|
||||
*/
|
||||
public function favicon(FaviconHandler $favicons)
|
||||
{
|
||||
$favicons->restoreOriginalIfNotExists();
|
||||
return response()->file($favicons->getPath());
|
||||
$exists = $favicons->restoreOriginalIfNotExists();
|
||||
return response()->file($exists ? $favicons->getPath() : $favicons->getOriginalPath());
|
||||
}
|
||||
}
|
||||
|
@@ -35,25 +35,29 @@ class FaviconHandler
|
||||
|
||||
/**
|
||||
* Restore the original favicon image.
|
||||
* Returned boolean indicates if the copy occurred.
|
||||
*/
|
||||
public function restoreOriginal(): void
|
||||
public function restoreOriginal(): bool
|
||||
{
|
||||
$original = public_path('icon.ico');
|
||||
if (!is_writeable($this->path)) {
|
||||
return;
|
||||
$permissionItem = file_exists($this->path) ? $this->path : dirname($this->path);
|
||||
if (!is_writeable($permissionItem)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
copy($original, $this->path);
|
||||
return copy($this->getOriginalPath(), $this->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore the original favicon image if no favicon image is already in use.
|
||||
* Returns a boolean to indicate if the file exists.
|
||||
*/
|
||||
public function restoreOriginalIfNotExists(): void
|
||||
public function restoreOriginalIfNotExists(): bool
|
||||
{
|
||||
if (!file_exists($this->path)) {
|
||||
$this->restoreOriginal();
|
||||
if (file_exists($this->path)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return $this->restoreOriginal();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,6 +68,14 @@ class FaviconHandler
|
||||
return $this->path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the path of the original favicon copy.
|
||||
*/
|
||||
public function getOriginalPath(): string
|
||||
{
|
||||
return public_path('icon.ico');
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert PNG image data to ICO file format.
|
||||
* Built following the file format info from Wikipedia:
|
||||
|
Reference in New Issue
Block a user