Compare commits

...

23 Commits

Author SHA1 Message Date
Dan Brown
1ee55e9948 New translations common.php (Persian) 2023-02-07 12:15:08 +00:00
Dan Brown
911c71ae10 New translations common.php (Chinese Simplified) 2023-02-07 12:15:05 +00:00
Dan Brown
e3f8ba4e26 New translations auth.php (Portuguese) 2023-02-07 12:14:36 +00:00
Dan Brown
f2e95af6f3 New translations entities.php (Persian) 2023-02-07 12:13:52 +00:00
Dan Brown
b5efa6b545 New translations entities.php (Chinese Simplified) 2023-02-07 12:13:49 +00:00
Dan Brown
14ced9049b New translations entities.php (Dutch) 2023-02-07 12:13:43 +00:00
Dan Brown
913489b5d0 New translations entities.php (Japanese) 2023-02-07 12:13:40 +00:00
Dan Brown
e6b23f0257 New translations entities.php (Czech) 2023-02-07 12:13:35 +00:00
Dan Brown
037ac4ca42 New translations errors.php (Chinese Simplified) 2023-02-07 12:13:17 +00:00
Dan Brown
1ac3ba12a7 New translations errors.php (Portuguese) 2023-02-07 12:13:12 +00:00
Dan Brown
2a2b207e54 New translations errors.php (Japanese) 2023-02-07 12:13:09 +00:00
Dan Brown
3356d43fbf New translations errors.php (Czech) 2023-02-07 12:13:03 +00:00
Dan Brown
ee27953249 New translations settings.php (Persian) 2023-02-07 12:12:57 +00:00
Dan Brown
cee4fc9a87 New translations settings.php (Chinese Simplified) 2023-02-07 12:12:53 +00:00
Dan Brown
7d50fdccd7 New translations settings.php (Portuguese) 2023-02-07 12:12:49 +00:00
Dan Brown
cf6dc6587b New translations settings.php (Japanese) 2023-02-07 12:12:44 +00:00
Dan Brown
4a00d295cb New translations settings.php (Czech) 2023-02-07 12:12:39 +00:00
Dan Brown
51ed5f5230 New translations entities.php (Portuguese) 2023-02-07 12:12:24 +00:00
Dan Brown
ba25a3e1b7
Merge pull request #4021 from BookStackApp/laravel9
Upgrade framework to Laravel 9
2023-02-07 12:11:04 +00:00
Dan Brown
bc18dc7da6
Removed parallel testing, updated predis
Parallel testing paratest library caused issues due to a single version
not being compatibile across our php range. Removed for now as not
really worth the faff to get compatible.
2023-02-07 11:50:59 +00:00
Dan Brown
5e8ec56196
Fixed issues found from tests 2023-02-06 20:41:33 +00:00
Dan Brown
9ca088a4e2
Fixed static analysis issues 2023-02-06 20:00:44 +00:00
Dan Brown
008e7a4d25
Followed Laravel 9 update steps and file changes 2023-02-06 16:58:29 +00:00
619 changed files with 1887 additions and 2736 deletions

View File

@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
strategy: strategy:
matrix: matrix:
php: ['7.4', '8.0', '8.1', '8.2'] php: ['8.0', '8.1', '8.2']
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1

View File

@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
strategy: strategy:
matrix: matrix:
php: ['7.4', '8.0', '8.1', '8.2'] php: ['8.0', '8.1', '8.2']
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1

View File

@ -8,6 +8,8 @@
* Do not edit this file unless you're happy to maintain any changes yourself. * Do not edit this file unless you're happy to maintain any changes yourself.
*/ */
use Illuminate\Support\Facades\Facade;
return [ return [
// The environment to run BookStack in. // The environment to run BookStack in.
@ -98,7 +100,13 @@ return [
// Encryption cipher // Encryption cipher
'cipher' => 'AES-256-CBC', 'cipher' => 'AES-256-CBC',
// Application Services Provides // Maintenance Mode Driver
'maintenance' => [
'driver' => 'file',
// 'store' => 'redis',
],
// Application Service Providers
'providers' => [ 'providers' => [
// Laravel Framework Service Providers... // Laravel Framework Service Providers...
@ -141,58 +149,9 @@ return [
BookStack\Providers\ViewTweaksServiceProvider::class, BookStack\Providers\ViewTweaksServiceProvider::class,
], ],
/* // Class Aliases
|-------------------------------------------------------------------------- // This array of class aliases to be registered on application start.
| Class Aliases 'aliases' => Facade::defaultAliases()->merge([
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/
// Class aliases, Registered on application start
'aliases' => [
// Laravel
'App' => Illuminate\Support\Facades\App::class,
'Arr' => Illuminate\Support\Arr::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
'Blade' => Illuminate\Support\Facades\Blade::class,
'Bus' => Illuminate\Support\Facades\Bus::class,
'Cache' => Illuminate\Support\Facades\Cache::class,
'Config' => Illuminate\Support\Facades\Config::class,
'Cookie' => Illuminate\Support\Facades\Cookie::class,
'Crypt' => Illuminate\Support\Facades\Crypt::class,
'Date' => Illuminate\Support\Facades\Date::class,
'DB' => Illuminate\Support\Facades\DB::class,
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
'Event' => Illuminate\Support\Facades\Event::class,
'File' => Illuminate\Support\Facades\File::class,
'Gate' => Illuminate\Support\Facades\Gate::class,
'Hash' => Illuminate\Support\Facades\Hash::class,
'Http' => Illuminate\Support\Facades\Http::class,
'Lang' => Illuminate\Support\Facades\Lang::class,
'Log' => Illuminate\Support\Facades\Log::class,
'Mail' => Illuminate\Support\Facades\Mail::class,
'Notification' => Illuminate\Support\Facades\Notification::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
'RateLimiter' => Illuminate\Support\Facades\RateLimiter::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
// 'Redis' => Illuminate\Support\Facades\Redis::class,
'Request' => Illuminate\Support\Facades\Request::class,
'Response' => Illuminate\Support\Facades\Response::class,
'Route' => Illuminate\Support\Facades\Route::class,
'Schema' => Illuminate\Support\Facades\Schema::class,
'Session' => Illuminate\Support\Facades\Session::class,
'Storage' => Illuminate\Support\Facades\Storage::class,
'Str' => Illuminate\Support\Str::class,
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
// Laravel Packages // Laravel Packages
'Socialite' => Laravel\Socialite\Facades\Socialite::class, 'Socialite' => Laravel\Socialite\Facades\Socialite::class,
@ -202,7 +161,7 @@ return [
// Custom BookStack // Custom BookStack
'Activity' => BookStack\Facades\Activity::class, 'Activity' => BookStack\Facades\Activity::class,
'Theme' => BookStack\Facades\Theme::class, 'Theme' => BookStack\Facades\Theme::class,
], ])->toArray(),
// Proxy configuration // Proxy configuration
'proxies' => env('APP_PROXIES', ''), 'proxies' => env('APP_PROXIES', ''),

View File

@ -14,7 +14,7 @@ return [
// This option controls the default broadcaster that will be used by the // This option controls the default broadcaster that will be used by the
// framework when an event needs to be broadcast. This can be set to // framework when an event needs to be broadcast. This can be set to
// any of the connections defined in the "connections" array below. // any of the connections defined in the "connections" array below.
'default' => env('BROADCAST_DRIVER', 'pusher'), 'default' => 'null',
// Broadcast Connections // Broadcast Connections
// Here you may define all of the broadcast connections that will be used // Here you may define all of the broadcast connections that will be used
@ -22,21 +22,7 @@ return [
// each available type of connection are provided inside this array. // each available type of connection are provided inside this array.
'connections' => [ 'connections' => [
'pusher' => [ // Default options removed since we don't use broadcasting.
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => true,
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
'log' => [ 'log' => [
'driver' => 'log', 'driver' => 'log',

View File

@ -87,6 +87,6 @@ return [
| |
*/ */
'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_cache'), 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_cache_'),
]; ];

View File

@ -33,17 +33,20 @@ return [
'driver' => 'local', 'driver' => 'local',
'root' => public_path(), 'root' => public_path(),
'visibility' => 'public', 'visibility' => 'public',
'throw' => true,
], ],
'local_secure_attachments' => [ 'local_secure_attachments' => [
'driver' => 'local', 'driver' => 'local',
'root' => storage_path('uploads/files/'), 'root' => storage_path('uploads/files/'),
'throw' => true,
], ],
'local_secure_images' => [ 'local_secure_images' => [
'driver' => 'local', 'driver' => 'local',
'root' => storage_path('uploads/images/'), 'root' => storage_path('uploads/images/'),
'visibility' => 'public', 'visibility' => 'public',
'throw' => true,
], ],
's3' => [ 's3' => [
@ -54,6 +57,7 @@ return [
'bucket' => env('STORAGE_S3_BUCKET', 'your-bucket'), 'bucket' => env('STORAGE_S3_BUCKET', 'your-bucket'),
'endpoint' => env('STORAGE_S3_ENDPOINT', null), 'endpoint' => env('STORAGE_S3_ENDPOINT', null),
'use_path_style_endpoint' => env('STORAGE_S3_ENDPOINT', null) !== null, 'use_path_style_endpoint' => env('STORAGE_S3_ENDPOINT', null) !== null,
'throw' => true,
], ],
], ],

View File

@ -21,6 +21,15 @@ return [
// one of the channels defined in the "channels" configuration array. // one of the channels defined in the "channels" configuration array.
'default' => env('LOG_CHANNEL', 'single'), 'default' => env('LOG_CHANNEL', 'single'),
// Deprecations Log Channel
// This option controls the log channel that should be used to log warnings
// regarding deprecated PHP and library features. This allows you to get
// your application ready for upcoming major versions of dependencies.
'deprecations' => [
'channel' => 'null',
'trace' => false,
],
// Log Channels // Log Channels
// Here you may configure the log channels for your application. Out of // Here you may configure the log channels for your application. Out of
// the box, Laravel uses the Monolog PHP logging library. This gives // the box, Laravel uses the Monolog PHP logging library. This gives

View File

@ -14,13 +14,7 @@ return [
// From Laravel 7+ this is MAIL_MAILER in laravel. // From Laravel 7+ this is MAIL_MAILER in laravel.
// Kept as MAIL_DRIVER in BookStack to prevent breaking change. // Kept as MAIL_DRIVER in BookStack to prevent breaking change.
// Options: smtp, sendmail, log, array // Options: smtp, sendmail, log, array
'driver' => env('MAIL_DRIVER', 'smtp'), 'default' => env('MAIL_DRIVER', 'smtp'),
// SMTP host address
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
// SMTP host port
'port' => env('MAIL_PORT', 587),
// Global "From" address & name // Global "From" address & name
'from' => [ 'from' => [
@ -28,17 +22,42 @@ return [
'name' => env('MAIL_FROM_NAME', 'BookStack'), 'name' => env('MAIL_FROM_NAME', 'BookStack'),
], ],
// Email encryption protocol // Mailer Configurations
// Available mailing methods and their settings.
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'encryption' => env('MAIL_ENCRYPTION', 'tls'),
// SMTP server username
'username' => env('MAIL_USERNAME'), 'username' => env('MAIL_USERNAME'),
// SMTP server password
'password' => env('MAIL_PASSWORD'), 'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'local_domain' => env('MAIL_EHLO_DOMAIN'),
],
// Sendmail application path 'sendmail' => [
'sendmail' => '/usr/sbin/sendmail -bs', 'transport' => 'sendmail',
'path' => '/usr/sbin/sendmail -bs',
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
'failover' => [
'transport' => 'failover',
'mailers' => [
'smtp',
'log',
],
],
],
// Email markdown configuration // Email markdown configuration
'markdown' => [ 'markdown' => [
@ -47,11 +66,4 @@ return [
resource_path('views/vendor/mail'), resource_path('views/vendor/mail'),
], ],
], ],
// Log Channel
// If you are using the "log" driver, you may specify the logging channel
// if you prefer to keep mail messages separate from other log entries
// for simpler reading. Otherwise, the default channel will be used.
'log_channel' => env('MAIL_LOG_CHANNEL'),
]; ];

View File

@ -2,18 +2,18 @@
namespace BookStack\Entities\Tools\Markdown; namespace BookStack\Entities\Tools\Markdown;
use League\CommonMark\Block\Element\AbstractBlock; use League\CommonMark\Extension\CommonMark\Node\Block\ListItem;
use League\CommonMark\Block\Element\ListItem; use League\CommonMark\Extension\CommonMark\Renderer\Block\ListItemRenderer;
use League\CommonMark\Block\Element\Paragraph;
use League\CommonMark\Block\Renderer\BlockRendererInterface;
use League\CommonMark\Block\Renderer\ListItemRenderer;
use League\CommonMark\ElementRendererInterface;
use League\CommonMark\Extension\TaskList\TaskListItemMarker; use League\CommonMark\Extension\TaskList\TaskListItemMarker;
use League\CommonMark\HtmlElement; use League\CommonMark\Node\Block\Paragraph;
use League\CommonMark\Node\Node;
use League\CommonMark\Renderer\ChildNodeRendererInterface;
use League\CommonMark\Renderer\NodeRendererInterface;
use League\CommonMark\Util\HtmlElement;
class CustomListItemRenderer implements BlockRendererInterface class CustomListItemRenderer implements NodeRendererInterface
{ {
protected $baseRenderer; protected ListItemRenderer $baseRenderer;
public function __construct() public function __construct()
{ {
@ -23,11 +23,11 @@ class CustomListItemRenderer implements BlockRendererInterface
/** /**
* @return HtmlElement|string|null * @return HtmlElement|string|null
*/ */
public function render(AbstractBlock $block, ElementRendererInterface $htmlRenderer, bool $inTightList = false) public function render(Node $node, ChildNodeRendererInterface $childRenderer)
{ {
$listItem = $this->baseRenderer->render($block, $htmlRenderer, $inTightList); $listItem = $this->baseRenderer->render($node, $childRenderer);
if ($this->startsTaskListItem($block)) { if ($node instanceof ListItem && $this->startsTaskListItem($node) && $listItem instanceof HtmlElement) {
$listItem->setAttribute('class', 'task-list-item'); $listItem->setAttribute('class', 'task-list-item');
} }

View File

@ -2,16 +2,16 @@
namespace BookStack\Entities\Tools\Markdown; namespace BookStack\Entities\Tools\Markdown;
use League\CommonMark\ConfigurableEnvironmentInterface; use League\CommonMark\Environment\EnvironmentBuilderInterface;
use League\CommonMark\Extension\ExtensionInterface; use League\CommonMark\Extension\ExtensionInterface;
use League\CommonMark\Extension\Strikethrough\Strikethrough; use League\CommonMark\Extension\Strikethrough\Strikethrough;
use League\CommonMark\Extension\Strikethrough\StrikethroughDelimiterProcessor; use League\CommonMark\Extension\Strikethrough\StrikethroughDelimiterProcessor;
class CustomStrikeThroughExtension implements ExtensionInterface class CustomStrikeThroughExtension implements ExtensionInterface
{ {
public function register(ConfigurableEnvironmentInterface $environment) public function register(EnvironmentBuilderInterface $environment): void
{ {
$environment->addDelimiterProcessor(new StrikethroughDelimiterProcessor()); $environment->addDelimiterProcessor(new StrikethroughDelimiterProcessor());
$environment->addInlineRenderer(Strikethrough::class, new CustomStrikethroughRenderer()); $environment->addRenderer(Strikethrough::class, new CustomStrikethroughRenderer());
} }
} }

View File

@ -2,25 +2,23 @@
namespace BookStack\Entities\Tools\Markdown; namespace BookStack\Entities\Tools\Markdown;
use League\CommonMark\ElementRendererInterface;
use League\CommonMark\Extension\Strikethrough\Strikethrough; use League\CommonMark\Extension\Strikethrough\Strikethrough;
use League\CommonMark\HtmlElement; use League\CommonMark\Node\Node;
use League\CommonMark\Inline\Element\AbstractInline; use League\CommonMark\Renderer\ChildNodeRendererInterface;
use League\CommonMark\Inline\Renderer\InlineRendererInterface; use League\CommonMark\Renderer\NodeRendererInterface;
use League\CommonMark\Util\HtmlElement;
/** /**
* This is a somewhat clone of the League\CommonMark\Extension\Strikethrough\StrikethroughRender * This is a somewhat clone of the League\CommonMark\Extension\Strikethrough\StrikethroughRender
* class but modified slightly to use <s> HTML tags instead of <del> in order to * class but modified slightly to use <s> HTML tags instead of <del> in order to
* match front-end markdown-it rendering. * match front-end markdown-it rendering.
*/ */
class CustomStrikethroughRenderer implements InlineRendererInterface class CustomStrikethroughRenderer implements NodeRendererInterface
{ {
public function render(AbstractInline $inline, ElementRendererInterface $htmlRenderer) public function render(Node $node, ChildNodeRendererInterface $childRenderer)
{ {
if (!($inline instanceof Strikethrough)) { Strikethrough::assertInstanceOf($node);
throw new \InvalidArgumentException('Incompatible inline type: ' . get_class($inline));
}
return new HtmlElement('s', $inline->getData('attributes', []), $htmlRenderer->renderInlines($inline->children())); return new HtmlElement('s', $node->data->get('attributes'), $childRenderer->renderNodes($node->children()));
} }
} }

View File

@ -4,8 +4,9 @@ namespace BookStack\Entities\Tools\Markdown;
use BookStack\Facades\Theme; use BookStack\Facades\Theme;
use BookStack\Theming\ThemeEvents; use BookStack\Theming\ThemeEvents;
use League\CommonMark\Block\Element\ListItem; use League\CommonMark\Environment\Environment;
use League\CommonMark\Environment; use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
use League\CommonMark\Extension\CommonMark\Node\Block\ListItem;
use League\CommonMark\Extension\Table\TableExtension; use League\CommonMark\Extension\Table\TableExtension;
use League\CommonMark\Extension\TaskList\TaskListExtension; use League\CommonMark\Extension\TaskList\TaskListExtension;
use League\CommonMark\MarkdownConverter; use League\CommonMark\MarkdownConverter;
@ -21,15 +22,16 @@ class MarkdownToHtml
public function convert(): string public function convert(): string
{ {
$environment = Environment::createCommonMarkEnvironment(); $environment = new Environment();
$environment->addExtension(new CommonMarkCoreExtension());
$environment->addExtension(new TableExtension()); $environment->addExtension(new TableExtension());
$environment->addExtension(new TaskListExtension()); $environment->addExtension(new TaskListExtension());
$environment->addExtension(new CustomStrikeThroughExtension()); $environment->addExtension(new CustomStrikeThroughExtension());
$environment = Theme::dispatch(ThemeEvents::COMMONMARK_ENVIRONMENT_CONFIGURE, $environment) ?? $environment; $environment = Theme::dispatch(ThemeEvents::COMMONMARK_ENVIRONMENT_CONFIGURE, $environment) ?? $environment;
$converter = new MarkdownConverter($environment); $converter = new MarkdownConverter($environment);
$environment->addBlockRenderer(ListItem::class, new CustomListItemRenderer(), 10); $environment->addRenderer(ListItem::class, new CustomListItemRenderer(), 10);
return $converter->convertToHtml($this->markdown); return $converter->convert($this->markdown)->getContent();
} }
} }

View File

@ -2,25 +2,18 @@
namespace BookStack\Exceptions; namespace BookStack\Exceptions;
use Whoops\Handler\Handler; use Illuminate\Contracts\Foundation\ExceptionRenderer;
class WhoopsBookStackPrettyHandler extends Handler class BookStackExceptionHandlerPage implements ExceptionRenderer
{ {
/** public function render($throwable)
* @return int|null A handler may return nothing, or a Handler::HANDLE_* constant
*/
public function handle()
{ {
$exception = $this->getException(); return view('errors.debug', [
'error' => $throwable->getMessage(),
echo view('errors.debug', [ 'errorClass' => get_class($throwable),
'error' => $exception->getMessage(), 'trace' => $throwable->getTraceAsString(),
'errorClass' => get_class($exception),
'trace' => $exception->getTraceAsString(),
'environment' => $this->getEnvironment(), 'environment' => $this->getEnvironment(),
])->render(); ])->render();
return Handler::QUIT;
} }
protected function safeReturn(callable $callback, $default = null) protected function safeReturn(callable $callback, $default = null)

View File

@ -17,7 +17,7 @@ class Handler extends ExceptionHandler
/** /**
* A list of the exception types that are not reported. * A list of the exception types that are not reported.
* *
* @var array * @var array<int, class-string<\Throwable>>
*/ */
protected $dontReport = [ protected $dontReport = [
NotFoundException::class, NotFoundException::class,
@ -25,9 +25,9 @@ class Handler extends ExceptionHandler
]; ];
/** /**
* A list of the inputs that are never flashed for validation exceptions. * A list of the inputs that are never flashed to the session on validation exceptions.
* *
* @var array * @var array<int, string>
*/ */
protected $dontFlash = [ protected $dontFlash = [
'current_password', 'current_password',
@ -98,6 +98,7 @@ class Handler extends ExceptionHandler
]; ];
if ($e instanceof ValidationException) { if ($e instanceof ValidationException) {
$responseData['error']['message'] = 'The given data was invalid.';
$responseData['error']['validation'] = $e->errors(); $responseData['error']['validation'] = $e->errors();
$code = $e->status; $code = $e->status;
} }

View File

@ -9,10 +9,8 @@ class Request extends LaravelRequest
/** /**
* Override the default request methods to get the scheme and host * Override the default request methods to get the scheme and host
* to directly use the custom APP_URL, if set. * to directly use the custom APP_URL, if set.
*
* @return string
*/ */
public function getSchemeAndHttpHost() public function getSchemeAndHttpHost(): string
{ {
$appUrl = config('app.url', null); $appUrl = config('app.url', null);
@ -27,10 +25,8 @@ class Request extends LaravelRequest
* Override the default request methods to get the base URL * Override the default request methods to get the base URL
* to directly use the custom APP_URL, if set. * to directly use the custom APP_URL, if set.
* The base URL never ends with a / but should start with one if not empty. * The base URL never ends with a / but should start with one if not empty.
*
* @return string
*/ */
public function getBaseUrl() public function getBaseUrl(): string
{ {
$appUrl = config('app.url', null); $appUrl = config('app.url', null);

View File

@ -8,16 +8,16 @@ use BookStack\Entities\Models\Book;
use BookStack\Entities\Models\Bookshelf; use BookStack\Entities\Models\Bookshelf;
use BookStack\Entities\Models\Chapter; use BookStack\Entities\Models\Chapter;
use BookStack\Entities\Models\Page; use BookStack\Entities\Models\Page;
use BookStack\Exceptions\WhoopsBookStackPrettyHandler; use BookStack\Exceptions\BookStackExceptionHandlerPage;
use BookStack\Settings\SettingService; use BookStack\Settings\SettingService;
use BookStack\Util\CspService; use BookStack\Util\CspService;
use GuzzleHttp\Client; use GuzzleHttp\Client;
use Illuminate\Contracts\Foundation\ExceptionRenderer;
use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\URL; use Illuminate\Support\Facades\URL;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Psr\Http\Client\ClientInterface as HttpClientInterface; use Psr\Http\Client\ClientInterface as HttpClientInterface;
use Whoops\Handler\HandlerInterface;
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
{ {
@ -26,7 +26,7 @@ class AppServiceProvider extends ServiceProvider
* @var string[] * @var string[]
*/ */
public $bindings = [ public $bindings = [
HandlerInterface::class => WhoopsBookStackPrettyHandler::class, ExceptionRenderer::class => BookStackExceptionHandlerPage::class,
]; ];
/** /**

View File

@ -24,11 +24,22 @@ class EventServiceProvider extends ServiceProvider
]; ];
/** /**
* Register any other events for your application. * Register any events for your application.
* *
* @return void * @return void
*/ */
public function boot() public function boot()
{ {
//
}
/**
* Determine if events and listeners should be automatically discovered.
*
* @return bool
*/
public function shouldDiscoverEvents()
{
return false;
} }
} }

View File

@ -77,7 +77,7 @@ class RouteServiceProvider extends ServiceProvider
protected function configureRateLimiting() protected function configureRateLimiting()
{ {
RateLimiter::for('api', function (Request $request) { RateLimiter::for('api', function (Request $request) {
return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip()); return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
}); });
} }
} }

View File

@ -65,8 +65,8 @@ class ThemeEvents
* Provides the commonmark library environment for customization before it's used to render markdown content. * Provides the commonmark library environment for customization before it's used to render markdown content.
* If the listener returns a non-null value, that will be used as an environment instead. * If the listener returns a non-null value, that will be used as an environment instead.
* *
* @param \League\CommonMark\ConfigurableEnvironmentInterface $environment * @param \League\CommonMark\Environment\Environment $environment
* @returns \League\CommonMark\ConfigurableEnvironmentInterface|null * @returns \League\CommonMark\Environment\Environment|null
*/ */
const COMMONMARK_ENVIRONMENT_CONFIGURE = 'commonmark_environment_configure'; const COMMONMARK_ENVIRONMENT_CONFIGURE = 'commonmark_environment_configure';

View File

@ -9,7 +9,7 @@ use Illuminate\Contracts\Filesystem\Filesystem as Storage;
use Illuminate\Filesystem\FilesystemManager; use Illuminate\Filesystem\FilesystemManager;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use League\Flysystem\Util; use League\Flysystem\WhitespacePathNormalizer;
use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\File\UploadedFile;
class AttachmentService class AttachmentService
@ -54,7 +54,7 @@ class AttachmentService
*/ */
protected function adjustPathForStorageDisk(string $path): string protected function adjustPathForStorageDisk(string $path): string
{ {
$path = Util::normalizePath(str_replace('uploads/files/', '', $path)); $path = (new WhitespacePathNormalizer())->normalizePath(str_replace('uploads/files/', '', $path));
if ($this->getStorageDiskName() === 'local_secure_attachments') { if ($this->getStorageDiskName() === 'local_secure_attachments') {
return $path; return $path;

View File

@ -20,7 +20,7 @@ use Illuminate\Support\Str;
use Intervention\Image\Exception\NotSupportedException; use Intervention\Image\Exception\NotSupportedException;
use Intervention\Image\Image as InterventionImage; use Intervention\Image\Image as InterventionImage;
use Intervention\Image\ImageManager; use Intervention\Image\ImageManager;
use League\Flysystem\Util; use League\Flysystem\WhitespacePathNormalizer;
use Psr\SimpleCache\InvalidArgumentException; use Psr\SimpleCache\InvalidArgumentException;
use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpFoundation\StreamedResponse;
@ -29,10 +29,9 @@ class ImageService
{ {
protected ImageManager $imageTool; protected ImageManager $imageTool;
protected Cache $cache; protected Cache $cache;
protected $storageUrl;
protected FilesystemManager $fileSystem; protected FilesystemManager $fileSystem;
protected static $supportedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp']; protected static array $supportedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp'];
public function __construct(ImageManager $imageTool, FilesystemManager $fileSystem, Cache $cache) public function __construct(ImageManager $imageTool, FilesystemManager $fileSystem, Cache $cache)
{ {
@ -73,7 +72,7 @@ class ImageService
*/ */
protected function adjustPathForStorageDisk(string $path, string $imageType = ''): string protected function adjustPathForStorageDisk(string $path, string $imageType = ''): string
{ {
$path = Util::normalizePath(str_replace('uploads/images/', '', $path)); $path = (new WhitespacePathNormalizer())->normalizePath(str_replace('uploads/images/', '', $path));
if ($this->usingSecureImages($imageType)) { if ($this->usingSecureImages($imageType)) {
return $path; return $path;
@ -548,7 +547,7 @@ class ImageService
// Check the image file exists // Check the image file exists
&& $disk->exists($imagePath) && $disk->exists($imagePath)
// Check the file is likely an image file // Check the file is likely an image file
&& strpos($disk->getMimetype($imagePath), 'image/') === 0; && strpos($disk->mimeType($imagePath), 'image/') === 0;
} }
/** /**
@ -661,13 +660,12 @@ class ImageService
*/ */
private function getPublicUrl(string $filePath): string private function getPublicUrl(string $filePath): string
{ {
if (is_null($this->storageUrl)) {
$storageUrl = config('filesystems.url'); $storageUrl = config('filesystems.url');
// Get the standard public s3 url if s3 is set as storage type // Get the standard public s3 url if s3 is set as storage type
// Uses the nice, short URL if bucket name has no periods in otherwise the longer // Uses the nice, short URL if bucket name has no periods in otherwise the longer
// region-based url will be used to prevent http issues. // region-based url will be used to prevent http issues.
if ($storageUrl == false && config('filesystems.images') === 's3') { if (!$storageUrl && config('filesystems.images') === 's3') {
$storageDetails = config('filesystems.disks.s3'); $storageDetails = config('filesystems.disks.s3');
if (strpos($storageDetails['bucket'], '.') === false) { if (strpos($storageDetails['bucket'], '.') === false) {
$storageUrl = 'https://' . $storageDetails['bucket'] . '.s3.amazonaws.com'; $storageUrl = 'https://' . $storageDetails['bucket'] . '.s3.amazonaws.com';
@ -676,10 +674,7 @@ class ImageService
} }
} }
$this->storageUrl = $storageUrl; $basePath = $storageUrl ?: url('/');
}
$basePath = ($this->storageUrl == false) ? url('/') : $this->storageUrl;
return rtrim($basePath, '/') . $filePath; return rtrim($basePath, '/') . $filePath;
} }

View File

@ -130,7 +130,7 @@ class LanguageManager
]); ]);
if (!empty($locales)) { if (!empty($locales)) {
setlocale(LC_TIME, ...$locales); setlocale(LC_TIME, $locales[0], ...array_slice($locales, 1));
} }
} }
} }

View File

@ -8,7 +8,7 @@
"license": "MIT", "license": "MIT",
"type": "project", "type": "project",
"require": { "require": {
"php": "^7.4|^8.0", "php": "^8.0.2",
"ext-curl": "*", "ext-curl": "*",
"ext-dom": "*", "ext-dom": "*",
"ext-fileinfo": "*", "ext-fileinfo": "*",
@ -19,36 +19,34 @@
"bacon/bacon-qr-code": "^2.0", "bacon/bacon-qr-code": "^2.0",
"barryvdh/laravel-dompdf": "^2.0", "barryvdh/laravel-dompdf": "^2.0",
"barryvdh/laravel-snappy": "^1.0", "barryvdh/laravel-snappy": "^1.0",
"doctrine/dbal": "^3.1", "doctrine/dbal": "^3.5",
"filp/whoops": "^2.14",
"guzzlehttp/guzzle": "^7.4", "guzzlehttp/guzzle": "^7.4",
"intervention/image": "^2.7", "intervention/image": "^2.7",
"laravel/framework": "^8.68", "laravel/framework": "^9.0",
"laravel/socialite": "^5.2", "laravel/socialite": "^5.2",
"laravel/tinker": "^2.6", "laravel/tinker": "^2.6",
"league/commonmark": "^1.6", "league/commonmark": "^2.3",
"league/flysystem-aws-s3-v3": "^1.0.29", "league/flysystem-aws-s3-v3": "^3.0",
"league/html-to-markdown": "^5.0.0", "league/html-to-markdown": "^5.0.0",
"league/oauth2-client": "^2.6", "league/oauth2-client": "^2.6",
"onelogin/php-saml": "^4.0", "onelogin/php-saml": "^4.0",
"phpseclib/phpseclib": "~3.0", "phpseclib/phpseclib": "^3.0",
"pragmarx/google2fa": "^8.0", "pragmarx/google2fa": "^8.0",
"predis/predis": "^1.1", "predis/predis": "^2.1",
"socialiteproviders/discord": "^4.1", "socialiteproviders/discord": "^4.1",
"socialiteproviders/gitlab": "^4.1", "socialiteproviders/gitlab": "^4.1",
"socialiteproviders/microsoft-azure": "^5.0.1", "socialiteproviders/microsoft-azure": "^5.1",
"socialiteproviders/okta": "^4.1", "socialiteproviders/okta": "^4.2",
"socialiteproviders/slack": "^4.1", "socialiteproviders/slack": "^4.1",
"socialiteproviders/twitch": "^5.3", "socialiteproviders/twitch": "^5.3",
"ssddanbrown/htmldiff": "^1.0.2" "ssddanbrown/htmldiff": "^1.0.2"
}, },
"require-dev": { "require-dev": {
"brianium/paratest": "^6.6", "fakerphp/faker": "^1.21",
"fakerphp/faker": "^1.16",
"itsgoingd/clockwork": "^5.1", "itsgoingd/clockwork": "^5.1",
"mockery/mockery": "^1.4", "mockery/mockery": "^1.5",
"nunomaduro/collision": "^5.10", "nunomaduro/collision": "^6.4",
"nunomaduro/larastan": "^1.0", "nunomaduro/larastan": "^2.4",
"phpunit/phpunit": "^9.5", "phpunit/phpunit": "^9.5",
"squizlabs/php_codesniffer": "^3.7", "squizlabs/php_codesniffer": "^3.7",
"ssddanbrown/asserthtml": "^1.0" "ssddanbrown/asserthtml": "^1.0"
@ -73,7 +71,6 @@
"format": "phpcbf", "format": "phpcbf",
"lint": "phpcs", "lint": "phpcs",
"test": "phpunit", "test": "phpunit",
"t": "@php artisan test --parallel",
"t-reset": "@php artisan test --recreate-databases", "t-reset": "@php artisan test --recreate-databases",
"post-autoload-dump": [ "post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
@ -102,7 +99,7 @@
"preferred-install": "dist", "preferred-install": "dist",
"sort-packages": true, "sort-packages": true,
"platform": { "platform": {
"php": "7.4.0" "php": "8.0.2"
} }
}, },
"extra": { "extra": {
@ -110,6 +107,6 @@
"dont-discover": [] "dont-discover": []
} }
}, },
"minimum-stability": "dev", "minimum-stability": "stable",
"prefer-stable": true "prefer-stable": true
} }

3680
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -5,6 +5,6 @@ pull_request_title: Updated translations with latest Crowdin changes
pull_request_labels: pull_request_labels:
- ":earth_africa: Translations" - ":earth_africa: Translations"
files: files:
- source: /resources/lang/en/*.php - source: /lang/en/*.php
translation: /resources/lang/%two_letters_code%/%original_file_name% translation: /lang/%two_letters_code%/%original_file_name%
type: php type: php

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class CreateUsersTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -40,4 +40,4 @@ class CreateUsersTable extends Migration
{ {
Schema::drop('users'); Schema::drop('users');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class CreatePasswordResetsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -28,4 +28,4 @@ class CreatePasswordResetsTable extends Migration
{ {
Schema::drop('password_resets'); Schema::drop('password_resets');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class CreateBooksTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -30,4 +30,4 @@ class CreateBooksTable extends Migration
{ {
Schema::drop('books'); Schema::drop('books');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class CreatePagesTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -34,4 +34,4 @@ class CreatePagesTable extends Migration
{ {
Schema::drop('pages'); Schema::drop('pages');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class CreateImagesTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -29,4 +29,4 @@ class CreateImagesTable extends Migration
{ {
Schema::drop('images'); Schema::drop('images');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class CreateChaptersTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -32,4 +32,4 @@ class CreateChaptersTable extends Migration
{ {
Schema::drop('chapters'); Schema::drop('chapters');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class AddUsersToEntities extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -54,4 +54,4 @@ class AddUsersToEntities extends Migration
$table->dropColumn('updated_by'); $table->dropColumn('updated_by');
}); });
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class CreatePageRevisionsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -32,4 +32,4 @@ class CreatePageRevisionsTable extends Migration
{ {
Schema::drop('page_revisions'); Schema::drop('page_revisions');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class CreateActivitiesTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -33,4 +33,4 @@ class CreateActivitiesTable extends Migration
{ {
Schema::drop('activities'); Schema::drop('activities');
} }
} };

View File

@ -1,8 +1,5 @@
<?php <?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
/** /**
* Much of this code has been taken from entrust, * Much of this code has been taken from entrust,
* a role & permission management solution for Laravel. * a role & permission management solution for Laravel.
@ -12,7 +9,11 @@ use Illuminate\Database\Schema\Blueprint;
* @license MIT * @license MIT
* @url https://github.com/Zizaco/entrust * @url https://github.com/Zizaco/entrust
*/ */
class AddRolesAndPermissions extends Migration
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -147,4 +148,4 @@ class AddRolesAndPermissions extends Migration
Schema::drop('role_user'); Schema::drop('role_user');
Schema::drop('roles'); Schema::drop('roles');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class CreateSettingsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -28,4 +28,4 @@ class CreateSettingsTable extends Migration
{ {
Schema::drop('settings'); Schema::drop('settings');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class AddSearchIndexes extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -51,4 +51,4 @@ class AddSearchIndexes extends Migration
}); });
} }
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class CreateSocialAccountsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -31,4 +31,4 @@ class CreateSocialAccountsTable extends Migration
{ {
Schema::drop('social_accounts'); Schema::drop('social_accounts');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class AddEmailConfirmationTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -36,4 +36,4 @@ class AddEmailConfirmationTable extends Migration
}); });
Schema::drop('email_confirmations'); Schema::drop('email_confirmations');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class CreateViewsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -31,4 +31,4 @@ class CreateViewsTable extends Migration
{ {
Schema::drop('views'); Schema::drop('views');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class AddEntityIndexes extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -86,4 +86,4 @@ class AddEntityIndexes extends Migration
$table->dropIndex('views_viewable_id_index'); $table->dropIndex('views_viewable_id_index');
}); });
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class FulltextWeighting extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -51,4 +51,4 @@ class FulltextWeighting extends Migration
}); });
} }
} }
} };

View File

@ -4,7 +4,7 @@ use BookStack\Uploads\Image;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class AddImageUploadTypes extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -37,4 +37,4 @@ class AddImageUploadTypes extends Migration
$table->dropColumn('path'); $table->dropColumn('path');
}); });
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class AddUserAvatars extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -28,4 +28,4 @@ class AddUserAvatars extends Migration
$table->dropColumn('image_id'); $table->dropColumn('image_id');
}); });
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class AddExternalAuthToUsers extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -28,4 +28,4 @@ class AddExternalAuthToUsers extends Migration
$table->dropColumn('external_auth_id'); $table->dropColumn('external_auth_id');
}); });
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class AddSlugToRevisions extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -32,4 +32,4 @@ class AddSlugToRevisions extends Migration
$table->dropColumn('book_slug'); $table->dropColumn('book_slug');
}); });
} }
} };

View File

@ -2,7 +2,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
class UpdatePermissionsAndRoles extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -113,4 +113,4 @@ class UpdatePermissionsAndRoles extends Migration
} }
} }
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class AddEntityAccessControls extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -69,4 +69,4 @@ class AddEntityAccessControls extends Migration
Schema::drop('restrictions'); Schema::drop('restrictions');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class AddPageRevisionTypes extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -29,4 +29,4 @@ class AddPageRevisionTypes extends Migration
$table->dropColumn('type'); $table->dropColumn('type');
}); });
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class AddPageDrafts extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -29,4 +29,4 @@ class AddPageDrafts extends Migration
$table->dropColumn('draft'); $table->dropColumn('draft');
}); });
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class AddMarkdownSupport extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -36,4 +36,4 @@ class AddMarkdownSupport extends Migration
$table->dropColumn('markdown'); $table->dropColumn('markdown');
}); });
} }
} };

View File

@ -2,7 +2,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
class AddViewPermissionsToRoles extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -54,4 +54,4 @@ class AddViewPermissionsToRoles extends Migration
} }
} }
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Str; use Illuminate\Support\Str;
class CreateJointPermissionsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -97,4 +97,4 @@ class CreateJointPermissionsTable extends Migration
$table->dropColumn('hidden'); $table->dropColumn('hidden');
}); });
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
class CreateTagsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -37,4 +37,4 @@ class CreateTagsTable extends Migration
{ {
Schema::drop('tags'); Schema::drop('tags');
} }
} };

View File

@ -2,7 +2,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
class AddSummaryToPageRevisions extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -27,4 +27,4 @@ class AddSummaryToPageRevisions extends Migration
$table->dropColumn('summary'); $table->dropColumn('summary');
}); });
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class RemoveHiddenRoles extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -63,4 +63,4 @@ class RemoveHiddenRoles extends Migration
DB::table('roles')->where('system_name', '=', 'public')->update(['hidden' => true]); DB::table('roles')->where('system_name', '=', 'public')->update(['hidden' => true]);
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateAttachmentsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -67,4 +67,4 @@ class CreateAttachmentsTable extends Migration
DB::table('role_permissions')->where('name', '=', $permName)->delete(); DB::table('role_permissions')->where('name', '=', $permName)->delete();
} }
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateCacheTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -29,4 +29,4 @@ class CreateCacheTable extends Migration
{ {
Schema::dropIfExists('cache'); Schema::dropIfExists('cache');
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateSessionsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -32,4 +32,4 @@ class CreateSessionsTable extends Migration
{ {
Schema::dropIfExists('sessions'); Schema::dropIfExists('sessions');
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateSearchIndexTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -73,4 +73,4 @@ class CreateSearchIndexTable extends Migration
Schema::dropIfExists('search_terms'); Schema::dropIfExists('search_terms');
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddRevisionCounts extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -41,4 +41,4 @@ class AddRevisionCounts extends Migration
$table->dropColumn('revision_number'); $table->dropColumn('revision_number');
}); });
} }
} };

View File

@ -2,7 +2,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
class UpdateDbEncodingToUt8mb4 extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -25,4 +25,4 @@ class UpdateDbEncodingToUt8mb4 extends Migration
{ {
// //
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateCommentsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -64,4 +64,4 @@ class CreateCommentsTable extends Migration
DB::table('role_permissions')->where('name', '=', $permName)->delete(); DB::table('role_permissions')->where('name', '=', $permName)->delete();
} }
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddCoverImageDisplay extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -29,4 +29,4 @@ class AddCoverImageDisplay extends Migration
$table->dropColumn('image_id'); $table->dropColumn('image_id');
}); });
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddRoleExternalAuthId extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -30,4 +30,4 @@ class AddRoleExternalAuthId extends Migration
$table->dropColumn('external_auth_id'); $table->dropColumn('external_auth_id');
}); });
} }
} };

View File

@ -5,7 +5,7 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateBookshelvesTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -128,4 +128,4 @@ class CreateBookshelvesTable extends Migration
DB::table('search_terms')->where('entity_type', '=', 'BookStack\Entities\Models\Bookshelf')->delete(); DB::table('search_terms')->where('entity_type', '=', 'BookStack\Entities\Models\Bookshelf')->delete();
DB::table('comments')->where('entity_type', '=', 'BookStack\Entities\Models\Bookshelf')->delete(); DB::table('comments')->where('entity_type', '=', 'BookStack\Entities\Models\Bookshelf')->delete();
} }
} };

View File

@ -5,7 +5,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddTemplateSupport extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -51,4 +51,4 @@ class AddTemplateSupport extends Migration
DB::table('permission_role')->where('permission_id', '=', $templatesManagePermission->id)->delete(); DB::table('permission_role')->where('permission_id', '=', $templatesManagePermission->id)->delete();
DB::table('role_permissions')->where('name', '=', 'templates-manage')->delete(); DB::table('role_permissions')->where('name', '=', 'templates-manage')->delete();
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddUserInvitesTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -30,4 +30,4 @@ class AddUserInvitesTable extends Migration
{ {
Schema::dropIfExists('user_invites'); Schema::dropIfExists('user_invites');
} }
} };

View File

@ -5,7 +5,7 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddApiAuth extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -57,4 +57,4 @@ class AddApiAuth extends Migration
DB::table('permission_role')->where('permission_id', '=', $apiAccessPermission->id)->delete(); DB::table('permission_role')->where('permission_id', '=', $apiAccessPermission->id)->delete();
DB::table('role_permissions')->where('name', '=', 'access-api')->delete(); DB::table('role_permissions')->where('name', '=', 'access-api')->delete();
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class DropJointPermissionsId extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -34,4 +34,4 @@ class DropJointPermissionsId extends Migration
$table->increments('id')->unsigned(); $table->increments('id')->unsigned();
}); });
} }
} };

View File

@ -5,7 +5,7 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class RemoveRoleNameField extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -34,4 +34,4 @@ class RemoveRoleNameField extends Migration
'name' => DB::raw("lower(replace(`display_name`, ' ', '-'))"), 'name' => DB::raw("lower(replace(`display_name`, ' ', '-'))"),
]); ]);
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddActivityIndexes extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -31,4 +31,4 @@ class AddActivityIndexes extends Migration
$table->dropIndex('activities_created_at_index'); $table->dropIndex('activities_created_at_index');
}); });
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddEntitySoftDeletes extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -47,4 +47,4 @@ class AddEntitySoftDeletes extends Migration
$table->dropSoftDeletes(); $table->dropSoftDeletes();
}); });
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateDeletionsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -35,4 +35,4 @@ class CreateDeletionsTable extends Migration
{ {
Schema::dropIfExists('deletions'); Schema::dropIfExists('deletions');
} }
} };

View File

@ -5,7 +5,7 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class SimplifyActivitiesTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -55,4 +55,4 @@ class SimplifyActivitiesTable extends Migration
$table->index('book_id'); $table->index('book_id');
}); });
} }
} };

View File

@ -5,7 +5,7 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddOwnedByFieldToEntities extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -46,4 +46,4 @@ class AddOwnedByFieldToEntities extends Migration
$table->renameColumn('owned_by', 'created_by'); $table->renameColumn('owned_by', 'created_by');
}); });
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddSettingsTypeColumn extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -29,4 +29,4 @@ class AddSettingsTypeColumn extends Migration
$table->dropColumn('type'); $table->dropColumn('type');
}); });
} }
} };

View File

@ -5,7 +5,7 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Str; use Illuminate\Support\Str;
class AddUserSlug extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -47,4 +47,4 @@ class AddUserSlug extends Migration
$table->dropColumn('slug'); $table->dropColumn('slug');
}); });
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateFavouritesTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -33,4 +33,4 @@ class CreateFavouritesTable extends Migration
{ {
Schema::dropIfExists('favourites'); Schema::dropIfExists('favourites');
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateMfaValuesTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -31,4 +31,4 @@ class CreateMfaValuesTable extends Migration
{ {
Schema::dropIfExists('mfa_values'); Schema::dropIfExists('mfa_values');
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddMfaEnforcedToRolesTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -29,4 +29,4 @@ class AddMfaEnforcedToRolesTable extends Migration
$table->dropColumn('mfa_enforced'); $table->dropColumn('mfa_enforced');
}); });
} }
} };

View File

@ -4,7 +4,7 @@ use Carbon\Carbon;
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
class AddExportRolePermission extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -46,4 +46,4 @@ class AddExportRolePermission extends Migration
DB::table('permission_role')->where('permission_id', '=', $contentExportPermission->id)->delete(); DB::table('permission_role')->where('permission_id', '=', $contentExportPermission->id)->delete();
DB::table('role_permissions')->where('id', '=', 'content-export')->delete(); DB::table('role_permissions')->where('id', '=', 'content-export')->delete();
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddActivitiesIpColumn extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -29,4 +29,4 @@ class AddActivitiesIpColumn extends Migration
$table->dropColumn('ip'); $table->dropColumn('ip');
}); });
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddIndexForUserIp extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -29,4 +29,4 @@ class AddIndexForUserIp extends Migration
$table->dropIndex('activities_ip_index'); $table->dropIndex('activities_ip_index');
}); });
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateWebhooksTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -45,4 +45,4 @@ class CreateWebhooksTable extends Migration
Schema::dropIfExists('webhooks'); Schema::dropIfExists('webhooks');
Schema::dropIfExists('webhook_tracked_events'); Schema::dropIfExists('webhook_tracked_events');
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateJobsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -33,4 +33,4 @@ class CreateJobsTable extends Migration
{ {
Schema::dropIfExists('jobs'); Schema::dropIfExists('jobs');
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateFailedJobsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -33,4 +33,4 @@ class CreateFailedJobsTable extends Migration
{ {
Schema::dropIfExists('failed_jobs'); Schema::dropIfExists('failed_jobs');
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddWebhooksTimeoutErrorColumns extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -35,4 +35,4 @@ class AddWebhooksTimeoutErrorColumns extends Migration
$table->dropColumn('last_errored_at'); $table->dropColumn('last_errored_at');
}); });
} }
} };

View File

@ -6,7 +6,7 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class AddEditorChangeFieldAndPermission extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -59,4 +59,4 @@ class AddEditorChangeFieldAndPermission extends Migration
// Remove traces of the role permission // Remove traces of the role permission
DB::table('role_permissions')->where('name', '=', 'editor-change')->delete(); DB::table('role_permissions')->where('name', '=', 'editor-change')->delete();
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
class UpdatePolymorphicTypes extends Migration return new class extends Migration
{ {
/** /**
* Mapping of old polymorphic types to new simpler values. * Mapping of old polymorphic types to new simpler values.
@ -61,4 +61,4 @@ class UpdatePolymorphicTypes extends Migration
} }
} }
} }
} };

View File

@ -5,7 +5,7 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class DropJointPermissionType extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -38,4 +38,4 @@ class DropJointPermissionType extends Migration
$table->primary(['role_id', 'entity_type', 'entity_id', 'action']); $table->primary(['role_id', 'entity_type', 'entity_id', 'action']);
}); });
} }
} };

View File

@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class CreateReferencesTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -31,4 +31,4 @@ class CreateReferencesTable extends Migration
{ {
Schema::dropIfExists('references'); Schema::dropIfExists('references');
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
class FixShelfCoverImageTypes extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -41,4 +41,4 @@ class FixShelfCoverImageTypes extends Migration
->where('type', '=', 'cover_bookshelf') ->where('type', '=', 'cover_bookshelf')
->update(['type' => 'cover_book']); ->update(['type' => 'cover_book']);
} }
} };

View File

@ -6,7 +6,7 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class FlattenEntityPermissionsTable extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -102,4 +102,4 @@ class FlattenEntityPermissionsTable extends Migration
Schema::dropIfExists('entity_permissions'); Schema::dropIfExists('entity_permissions');
Schema::rename('old_entity_permissions', 'entity_permissions'); Schema::rename('old_entity_permissions', 'entity_permissions');
} }
} };

View File

@ -7,7 +7,7 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class DropEntityRestrictedField extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -90,4 +90,4 @@ class DropEntityRestrictedField extends Migration
// Delete default entity permissions // Delete default entity permissions
DB::table('entity_permissions')->where('role_id', '=', 0)->delete(); DB::table('entity_permissions')->where('role_id', '=', 0)->delete();
} }
} };

View File

@ -6,7 +6,7 @@ use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;
class RefactorJointPermissionsStorage extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -49,4 +49,4 @@ class RefactorJointPermissionsStorage extends Migration
$table->unsignedInteger('owned_by')->index(); $table->unsignedInteger('owned_by')->index();
}); });
} }
} };

View File

@ -3,7 +3,7 @@
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
class CopyColorSettingsForDarkMode extends Migration return new class extends Migration
{ {
/** /**
* Run the migrations. * Run the migrations.
@ -66,4 +66,4 @@ class CopyColorSettingsForDarkMode extends Migration
->whereIn('setting_key', $colorSettings) ->whereIn('setting_key', $colorSettings)
->delete(); ->delete();
} }
} };

Some files were not shown because too many files have changed in this diff Show More