Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions app/Access/Ldap.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public function setVersion($ldapConnection, int $version): bool
*
* @return \LDAP\Result|array|false
*/
public function search($ldapConnection, string $baseDn, string $filter, array $attributes = null)
public function search($ldapConnection, string $baseDn, string $filter, array $attributes = [])
{
return ldap_search($ldapConnection, $baseDn, $filter, $attributes);
}
Expand All @@ -66,7 +66,7 @@ public function search($ldapConnection, string $baseDn, string $filter, array $a
*
* @return \LDAP\Result|array|false
*/
public function read($ldapConnection, string $baseDn, string $filter, array $attributes = null)
public function read($ldapConnection, string $baseDn, string $filter, array $attributes = [])
{
return ldap_read($ldapConnection, $baseDn, $filter, $attributes);
}
Expand All @@ -87,7 +87,7 @@ public function getEntries($ldapConnection, $ldapSearchResult): array|false
*
* @param resource|\LDAP\Connection $ldapConnection
*/
public function searchAndGetEntries($ldapConnection, string $baseDn, string $filter, array $attributes = null): array|false
public function searchAndGetEntries($ldapConnection, string $baseDn, string $filter, array $attributes = []): array|false
{
$search = $this->search($ldapConnection, $baseDn, $filter, $attributes);

Expand All @@ -99,7 +99,7 @@ public function searchAndGetEntries($ldapConnection, string $baseDn, string $fil
*
* @param resource|\LDAP\Connection $ldapConnection
*/
public function bind($ldapConnection, string $bindRdn = null, string $bindPassword = null): bool
public function bind($ldapConnection, ?string $bindRdn = null, ?string $bindPassword = null): bool
{
return ldap_bind($ldapConnection, $bindRdn, $bindPassword);
}
Expand Down
2 changes: 1 addition & 1 deletion app/Access/SocialDriverManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public function addSocialDriver(
string $driverName,
array $config,
string $socialiteHandler,
callable $configureForRedirect = null
?callable $configureForRedirect = null
) {
$this->validDrivers[] = $driverName;
config()->set('services.' . $driverName, $config);
Expand Down
6 changes: 3 additions & 3 deletions app/App/helpers.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ function user(): User
* Check if the current user has a permission. If an ownable element
* is passed in the jointPermissions are checked against that particular item.
*/
function userCan(string $permission, Model $ownable = null): bool
function userCan(string $permission, ?Model $ownable = null): bool
{
if ($ownable === null) {
if (is_null($ownable)) {
return user()->can($permission);
}

Expand All @@ -71,7 +71,7 @@ function userCanOnAny(string $action, string $entityClass = ''): bool
*
* @return mixed|SettingService
*/
function setting(string $key = null, $default = null)
function setting(?string $key = null, mixed $default = null): mixed
{
$settingService = app()->make(SettingService::class);

Expand Down
1 change: 1 addition & 0 deletions app/Config/exports.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@
* @var array
*/
'allowed_protocols' => [
"data://" => ["rules" => []],
'file://' => ['rules' => []],
'http://' => ['rules' => []],
'https://' => ['rules' => []],
Expand Down
4 changes: 2 additions & 2 deletions app/Entities/Controllers/BookController.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public function index(Request $request)
/**
* Show the form for creating a new book.
*/
public function create(string $shelfSlug = null)
public function create(?string $shelfSlug = null)
{
$this->checkPermission('book-create-all');

Expand All @@ -93,7 +93,7 @@ public function create(string $shelfSlug = null)
* @throws ImageUploadException
* @throws ValidationException
*/
public function store(Request $request, string $shelfSlug = null)
public function store(Request $request, ?string $shelfSlug = null)
{
$this->checkPermission('book-create-all');
$validated = $this->validate($request, [
Expand Down
4 changes: 2 additions & 2 deletions app/Entities/Controllers/PageController.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public function __construct(
*
* @throws Throwable
*/
public function create(string $bookSlug, string $chapterSlug = null)
public function create(string $bookSlug, ?string $chapterSlug = null)
{
if ($chapterSlug) {
$parent = $this->entityQueries->chapters->findVisibleBySlugsOrFail($bookSlug, $chapterSlug);
Expand Down Expand Up @@ -69,7 +69,7 @@ public function create(string $bookSlug, string $chapterSlug = null)
*
* @throws ValidationException
*/
public function createAsGuest(Request $request, string $bookSlug, string $chapterSlug = null)
public function createAsGuest(Request $request, string $bookSlug, ?string $chapterSlug = null)
{
$this->validate($request, [
'name' => ['required', 'string', 'max:255'],
Expand Down
4 changes: 2 additions & 2 deletions app/Entities/Queries/QueryPopular.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ public function __construct(
) {
}

public function run(int $count, int $page, array $filterModels = null): Collection
public function run(int $count, int $page, array $filterModels): Collection
{
$query = $this->permissions
->restrictEntityRelationQuery(View::query(), 'views', 'viewable_id', 'viewable_type')
->select('*', 'viewable_id', 'viewable_type', DB::raw('SUM(views) as view_count'))
->groupBy('viewable_id', 'viewable_type')
->orderBy('view_count', 'desc');

if ($filterModels) {
if (!empty($filterModels)) {
$query->whereIn('viewable_type', $this->entityProvider->getMorphClasses($filterModels));
}

Expand Down
2 changes: 1 addition & 1 deletion app/Entities/Repos/RevisionRepo.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public function getNewDraftForCurrentUser(Page $page): PageRevision
/**
* Store a new revision in the system for the given page.
*/
public function storeNewForPage(Page $page, string $summary = null): PageRevision
public function storeNewForPage(Page $page, ?string $summary = null): PageRevision
{
$revision = new PageRevision();

Expand Down
2 changes: 1 addition & 1 deletion app/Theming/ThemeService.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public function readThemeActions(): void
/**
* @see SocialDriverManager::addSocialDriver
*/
public function addSocialDriver(string $driverName, array $config, string $socialiteHandler, callable $configureForRedirect = null): void
public function addSocialDriver(string $driverName, array $config, string $socialiteHandler, ?callable $configureForRedirect = null): void
{
$driverManager = app()->make(SocialDriverManager::class);
$driverManager->addSocialDriver($driverName, $config, $socialiteHandler, $configureForRedirect);
Expand Down
20 changes: 13 additions & 7 deletions app/Uploads/ImageRepo.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ public function getPaginatedByType(
string $type,
int $page = 0,
int $pageSize = 24,
int $uploadedTo = null,
string $search = null,
callable $whereClause = null
?int $uploadedTo = null,
?string $search = null,
?callable $whereClause = null
): array {
$imageQuery = Image::query()->where('type', '=', strtolower($type));

Expand Down Expand Up @@ -91,7 +91,7 @@ public function getEntityFiltered(
$parentFilter = function (Builder $query) use ($filterType, $contextPage) {
if ($filterType === 'page') {
$query->where('uploaded_to', '=', $contextPage->id);
} elseif ($filterType === 'book') {
} else if ($filterType === 'book') {
$validPageIds = $contextPage->book->pages()
->scopes('visible')
->pluck('id')
Expand All @@ -109,8 +109,14 @@ public function getEntityFiltered(
*
* @throws ImageUploadException
*/
public function saveNew(UploadedFile $uploadFile, string $type, int $uploadedTo = 0, int $resizeWidth = null, int $resizeHeight = null, bool $keepRatio = true): Image
{
public function saveNew(
UploadedFile $uploadFile,
string $type,
int $uploadedTo = 0,
?int $resizeWidth = null,
?int $resizeHeight = null,
bool $keepRatio = true
): Image {
$image = $this->imageService->saveNewFromUpload($uploadFile, $type, $uploadedTo, $resizeWidth, $resizeHeight, $keepRatio);

if ($type !== 'system') {
Expand Down Expand Up @@ -184,7 +190,7 @@ public function updateImageFile(Image $image, UploadedFile $file): void
*
* @throws Exception
*/
public function destroyImage(Image $image = null): void
public function destroyImage(?Image $image = null): void
{
if ($image) {
$this->imageService->destroy($image);
Expand Down
4 changes: 2 additions & 2 deletions app/Uploads/ImageService.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ public function saveNewFromUpload(
UploadedFile $uploadedFile,
string $type,
int $uploadedTo = 0,
int $resizeWidth = null,
int $resizeHeight = null,
?int $resizeWidth = null,
?int $resizeHeight = null,
bool $keepRatio = true,
string $imageName = '',
): Image {
Expand Down
4 changes: 2 additions & 2 deletions app/Users/Controllers/UserApiController.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public function __construct(UserRepo $userRepo)
});
}

protected function rules(int $userId = null): array
protected function rules(?int $userId = null): array
{
return [
'create' => [
Expand All @@ -54,7 +54,7 @@ protected function rules(int $userId = null): array
'string',
'email',
'min:2',
(new Unique('users', 'email'))->ignore($userId ?? null),
(new Unique('users', 'email'))->ignore($userId),
],
'external_auth_id' => ['string'],
'language' => ['string', 'max:15', 'alpha_dash'],
Expand Down
7 changes: 6 additions & 1 deletion app/Util/SsrUrlValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,16 @@

use BookStack\Exceptions\HttpFetchException;

/**
* Validate the host we're connecting to when making a server-side-request.
* Will use the given hosts config if given during construction otherwise
* will look to the app configured config.
*/
class SsrUrlValidator
{
protected string $config;

public function __construct(string $config = null)
public function __construct(?string $config = null)
{
$this->config = $config ?? config('app.ssr_hosts') ?? '';
}
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"ext-xml": "*",
"ext-zip": "*",
"bacon/bacon-qr-code": "^3.0",
"dompdf/dompdf": "^3.0",
"dompdf/dompdf": "^3.1",
"guzzlehttp/guzzle": "^7.4",
"intervention/image": "^3.5",
"knplabs/knp-snappy": "^1.5",
Expand Down
12 changes: 6 additions & 6 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dev/docs/logical-theme-system.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ This method allows you to register a custom social authentication driver within
- string $driverName
- array $config
- string $socialiteHandler
- callable|null $configureForRedirect = null

**Example**

Expand Down
10 changes: 5 additions & 5 deletions tests/Entity/PageEditorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -191,20 +191,20 @@ public function test_editor_type_switch_options_show()
{
$resp = $this->asAdmin()->get($this->page->getUrl('/edit'));
$editLink = $this->page->getUrl('/edit') . '?editor=';
$this->withHtml($resp)->assertElementContains("a[href=\"${editLink}markdown-clean\"]", '(Clean Content)');
$this->withHtml($resp)->assertElementContains("a[href=\"${editLink}markdown-stable\"]", '(Stable Content)');
$this->withHtml($resp)->assertElementContains("a[href=\"${editLink}wysiwyg2024\"]", '(In Alpha Testing)');
$this->withHtml($resp)->assertElementContains("a[href=\"{$editLink}markdown-clean\"]", '(Clean Content)');
$this->withHtml($resp)->assertElementContains("a[href=\"{$editLink}markdown-stable\"]", '(Stable Content)');
$this->withHtml($resp)->assertElementContains("a[href=\"{$editLink}wysiwyg2024\"]", '(In Alpha Testing)');

$resp = $this->asAdmin()->get($this->page->getUrl('/edit?editor=markdown-stable'));
$editLink = $this->page->getUrl('/edit') . '?editor=';
$this->withHtml($resp)->assertElementContains("a[href=\"${editLink}wysiwyg\"]", 'Switch to WYSIWYG Editor');
$this->withHtml($resp)->assertElementContains("a[href=\"{$editLink}wysiwyg\"]", 'Switch to WYSIWYG Editor');
}

public function test_editor_type_switch_options_dont_show_if_without_change_editor_permissions()
{
$resp = $this->asEditor()->get($this->page->getUrl('/edit'));
$editLink = $this->page->getUrl('/edit') . '?editor=';
$this->withHtml($resp)->assertElementNotExists("a[href*=\"${editLink}\"]");
$this->withHtml($resp)->assertElementNotExists("a[href*=\"{$editLink}\"]");
}

public function test_page_editor_type_switch_does_not_work_without_change_editor_permissions()
Expand Down