diff --git a/app/Activity.php b/app/Activity.php index af38670..c01da1f 100644 --- a/app/Activity.php +++ b/app/Activity.php @@ -16,7 +16,9 @@ class Activity extends Model */ public function entity() { - if ($this->entity_type === '') $this->entity_type = null; + if ($this->entity_type === '') { + $this->entity_type = null; + } return $this->morphTo('entity'); } @@ -43,8 +45,8 @@ public function getText() * @param $activityB * @return bool */ - public function isSimilarTo($activityB) { + public function isSimilarTo($activityB) + { return [$this->key, $this->entity_type, $this->entity_id] === [$activityB->key, $activityB->entity_type, $activityB->entity_id]; } - } diff --git a/app/Attachment.php b/app/Attachment.php index fe291be..55344cd 100644 --- a/app/Attachment.php +++ b/app/Attachment.php @@ -1,6 +1,5 @@ name, '.')) return $this->name; + if (str_contains($this->name, '.')) { + return $this->name; + } return $this->name . '.' . $this->extension; } @@ -32,5 +33,4 @@ public function getUrl() { return baseUrl('/attachments/' . $this->id); } - } diff --git a/app/Book.php b/app/Book.php index 3fb87b4..457a4c9 100644 --- a/app/Book.php +++ b/app/Book.php @@ -27,7 +27,9 @@ public function getUrl($path = false) public function getBookCover($width = 440, $height = 250) { $default = baseUrl('/book_default_cover.png'); - if (!$this->image_id) return $default; + if (!$this->image_id) { + return $default; + } try { $cover = $this->cover ? baseUrl($this->cover->getThumb($width, $height, false)) : $default; @@ -91,5 +93,4 @@ public function entityRawQuery() { return "'BookStack\\\\Book' as entity_type, id, id as entity_id, slug, name, {$this->textField} as text,'' as html, '0' as book_id, '0' as priority, '0' as chapter_id, '0' as draft, created_by, updated_by, updated_at, created_at"; } - } diff --git a/app/Chapter.php b/app/Chapter.php index b08cb91..6dab9dc 100644 --- a/app/Chapter.php +++ b/app/Chapter.php @@ -1,6 +1,5 @@ textField} as text, '' as html, book_id, priority, '0' as chapter_id, '0' as draft, created_by, updated_by, updated_at, created_at"; } - } diff --git a/app/Console/Commands/DeleteUsers.php b/app/Console/Commands/DeleteUsers.php index 8829d39..6dba83e 100644 --- a/app/Console/Commands/DeleteUsers.php +++ b/app/Console/Commands/DeleteUsers.php @@ -6,7 +6,8 @@ use BookStack\Repos\UserRepo; use Illuminate\Console\Command; -class DeleteUsers extends Command{ +class DeleteUsers extends Command +{ /** * The name and signature of the console command. @@ -37,14 +38,11 @@ public function handle() { $confirm = $this->ask('This will delete all users from the system that are not "admin" or system users. Are you sure you want to continue? (Type "yes" to continue)'); $numDeleted = 0; - if (strtolower(trim($confirm)) === 'yes') - { + if (strtolower(trim($confirm)) === 'yes') { $totalUsers = $this->user->count(); $users = $this->user->where('system_name', '=', null)->with('roles')->get(); - foreach ($users as $user) - { - if ($user->hasSystemRole('admin')) - { + foreach ($users as $user) { + if ($user->hasSystemRole('admin')) { // don't delete users with "admin" role continue; } @@ -52,11 +50,8 @@ public function handle() ++$numDeleted; } $this->info("Deleted $numDeleted of $totalUsers total users."); - } - else - { + } else { $this->info('Exiting...'); } } - } diff --git a/app/Entity.php b/app/Entity.php index df8e4d3..1ea4e8d 100644 --- a/app/Entity.php +++ b/app/Entity.php @@ -1,6 +1,5 @@ id] === [get_class($entity), $entity->id]; - if ($matches) return true; + if ($matches) { + return true; + } if (($entity->isA('chapter') || $entity->isA('page')) && $this->isA('book')) { return $entity->book_id === $this->id; @@ -159,7 +160,9 @@ public static function getEntityInstance($type) */ public function getShortName($length = 25) { - if (strlen($this->name) <= $length) return $this->name; + if (strlen($this->name) <= $length) { + return $this->name; + } return substr($this->name, 0, $length - 3) . '...'; } @@ -176,13 +179,18 @@ public function getText() * Return a generalised, common raw query that can be 'unioned' across entities. * @return string */ - public function entityRawQuery(){return '';} + public function entityRawQuery() + { + return ''; + } /** * Get the url of this entity * @param $path * @return string */ - public function getUrl($path){return '/';} - + public function getUrl($path) + { + return '/'; + } } diff --git a/app/EntityPermission.php b/app/EntityPermission.php index eaf0a89..0f49e07 100644 --- a/app/EntityPermission.php +++ b/app/EntityPermission.php @@ -1,6 +1,5 @@ getPrevious()); return false; } @@ -107,7 +110,8 @@ protected function isExceptionType(Exception $e, $type) { * @param Exception $e * @return string */ - protected function getOriginalMessage(Exception $e) { + protected function getOriginalMessage(Exception $e) + { do { $message = $e->getMessage(); } while ($e = $e->getPrevious()); diff --git a/app/Exceptions/ImageUploadException.php b/app/Exceptions/ImageUploadException.php index 6f4c730..c64ddda 100644 --- a/app/Exceptions/ImageUploadException.php +++ b/app/Exceptions/ImageUploadException.php @@ -1,3 +1,6 @@ redirectLocation = $redirectLocation; parent::__construct(); } -} \ No newline at end of file +} diff --git a/app/Exceptions/PermissionsException.php b/app/Exceptions/PermissionsException.php index ae4c676..e2a8c53 100644 --- a/app/Exceptions/PermissionsException.php +++ b/app/Exceptions/PermissionsException.php @@ -1,6 +1,8 @@ trans($response)] ); } - -} \ No newline at end of file +} diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 3617652..106b905 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -70,7 +70,9 @@ public function username() protected function authenticated(Request $request, Authenticatable $user) { // Explicitly log them out for now if they do no exist. - if (!$user->exists) auth()->logout($user); + if (!$user->exists) { + auth()->logout($user); + } if (!$user->exists && $user->email === null && !$request->filled('email')) { $request->flash(); @@ -83,7 +85,6 @@ protected function authenticated(Request $request, Authenticatable $user) } if (!$user->exists) { - // Check for users with same email already $alreadyUser = $user->newQuery()->where('email', '=', $user->email)->count() > 0; if ($alreadyUser) { @@ -130,4 +131,4 @@ public function getSocialLogin($socialDriver) session()->put('social-callback', 'login'); return $this->socialAuthService->startLogIn($socialDriver); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 5a7a5e9..d3c1efb 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -113,7 +113,8 @@ public function postRegister(Request $request) if ($validator->fails()) { $this->throwValidationException( - $request, $validator + $request, + $validator ); } @@ -272,8 +273,12 @@ public function socialCallback($socialDriver, Request $request) } $action = session()->pull('social-callback'); - if ($action == 'login') return $this->socialAuthService->handleLoginCallback($socialDriver); - if ($action == 'register') return $this->socialRegisterCallback($socialDriver); + if ($action == 'login') { + return $this->socialAuthService->handleLoginCallback($socialDriver); + } + if ($action == 'register') { + return $this->socialRegisterCallback($socialDriver); + } return redirect()->back(); } @@ -308,5 +313,4 @@ protected function socialRegisterCallback($socialDriver) ]; return $this->registerUser($userData, $socialAccount); } - -} \ No newline at end of file +} diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php index eb67850..56f1cf0 100644 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -46,4 +46,4 @@ protected function sendResetResponse($response) return redirect($this->redirectPath()) ->with('status', trans($response)); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index f1645bb..7a98bd4 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -109,7 +109,7 @@ public function edit($slug) { $book = $this->entityRepo->getBySlug('book', $slug); $this->checkOwnablePermission('book-update', $book); - $this->setPageTitle(trans('entities.books_edit_named',['bookName'=>$book->getShortName()])); + $this->setPageTitle(trans('entities.books_edit_named', ['bookName'=>$book->getShortName()])); return view('books/edit', ['book' => $book, 'current' => $book]); } @@ -194,7 +194,7 @@ public function saveSort($bookSlug, Request $request) $bookIdsInvolved = collect([$book->id]); // Load models into map - $sortMap->each(function($mapItem) use ($bookIdsInvolved) { + $sortMap->each(function ($mapItem) use ($bookIdsInvolved) { $mapItem->type = ($mapItem->type === 'page' ? 'page' : 'chapter'); $mapItem->model = $this->entityRepo->getById($mapItem->type, $mapItem->id); // Store source and target books @@ -210,12 +210,12 @@ public function saveSort($bookSlug, Request $request) $this->showPermissionError(); } // Check permissions of involved books - $booksInvolved->each(function(Book $book) { + $booksInvolved->each(function (Book $book) { $this->checkOwnablePermission('book-update', $book); }); // Perform the sort - $sortMap->each(function($mapItem) { + $sortMap->each(function ($mapItem) { $model = $mapItem->model; $priorityChanged = intval($model->priority) !== intval($mapItem->sort); @@ -236,7 +236,7 @@ public function saveSort($bookSlug, Request $request) }); // Rebuild permissions and add activity for involved books. - $booksInvolved->each(function(Book $book) { + $booksInvolved->each(function (Book $book) { $this->entityRepo->buildJointPermissionsForBook($book); Activity::add($book, 'book_sort', $book->id); }); diff --git a/app/Http/Controllers/ChapterController.php b/app/Http/Controllers/ChapterController.php index ceeb2a3..a4e0b64 100644 --- a/app/Http/Controllers/ChapterController.php +++ b/app/Http/Controllers/ChapterController.php @@ -159,7 +159,8 @@ public function destroy($bookSlug, $chapterSlug) * @return mixed * @throws \BookStack\Exceptions\NotFoundException */ - public function showMove($bookSlug, $chapterSlug) { + public function showMove($bookSlug, $chapterSlug) + { $chapter = $this->entityRepo->getBySlug('chapter', $chapterSlug, $bookSlug); $this->setPageTitle(trans('entities.chapters_move_named', ['chapterName' => $chapter->getShortName()])); $this->checkOwnablePermission('chapter-update', $chapter); @@ -177,7 +178,8 @@ public function showMove($bookSlug, $chapterSlug) { * @return mixed * @throws \BookStack\Exceptions\NotFoundException */ - public function move($bookSlug, $chapterSlug, Request $request) { + public function move($bookSlug, $chapterSlug, Request $request) + { $chapter = $this->entityRepo->getBySlug('chapter', $chapterSlug, $bookSlug); $this->checkOwnablePermission('chapter-update', $chapter); diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 733d541..a51ff5d 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -51,7 +51,9 @@ public function __construct() */ protected function preventAccessForDemoUsers() { - if (config('app.env') === 'demo') $this->showPermissionError(); + if (config('app.env') === 'demo') { + $this->showPermissionError(); + } } /** @@ -100,7 +102,9 @@ protected function checkPermission($permissionName) */ protected function checkOwnablePermission($permission, Ownable $ownable) { - if (userCan($permission, $ownable)) return true; + if (userCan($permission, $ownable)) { + return true; + } return $this->showPermissionError(); } @@ -113,7 +117,9 @@ protected function checkOwnablePermission($permission, Ownable $ownable) protected function checkPermissionOr($permissionName, $callback) { $callbackResult = $callback(); - if ($callbackResult === false) $this->checkPermission($permissionName); + if ($callbackResult === false) { + $this->checkPermission($permissionName); + } return true; } @@ -145,5 +151,4 @@ protected function buildFailedValidationResponse(Request $request, array $errors ->withInput($request->input()) ->withErrors($errors, $this->errorBag()); } - } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 164becd..b262058 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -56,7 +56,8 @@ public function index() * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response * @throws \Exception */ - public function getTranslations() { + public function getTranslations() + { $locale = app()->getLocale(); $cacheKey = 'GLOBAL_TRANSLATIONS_' . $locale; if (cache()->has($cacheKey) && config('app.env') !== 'development') { @@ -95,5 +96,4 @@ public function customHeadContent() { return view('partials/custom-head-content'); } - } diff --git a/app/Http/Controllers/ImageController.php b/app/Http/Controllers/ImageController.php index e675bff..a61f447 100644 --- a/app/Http/Controllers/ImageController.php +++ b/app/Http/Controllers/ImageController.php @@ -63,14 +63,14 @@ public function getAllByType($type, $page = 0) * @param Request $request * @return mixed */ - public function searchByType($type, $page = 0, Request $request) + public function searchByType(Request $request, $type, $page = 0) { $this->validate($request, [ 'term' => 'required|string' ]); $searchTerm = $request->get('term'); - $imgData = $this->imageRepo->searchPaginatedByType($type, $page, 24, $searchTerm); + $imgData = $this->imageRepo->searchPaginatedByType($type, $searchTerm, $page, 24); return response()->json($imgData); } @@ -92,17 +92,19 @@ public function getAllForUserType($page = 0) * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\JsonResponse|\Symfony\Component\HttpFoundation\Response */ - public function getGalleryFiltered($filter, $page = 0, Request $request) + public function getGalleryFiltered(Request $request, $filter, $page = 0) { $this->validate($request, [ 'page_id' => 'required|integer' ]); $validFilters = collect(['page', 'book']); - if (!$validFilters->contains($filter)) return response('Invalid filter', 500); + if (!$validFilters->contains($filter)) { + return response('Invalid filter', 500); + } $pageId = $request->get('page_id'); - $imgData = $this->imageRepo->getGalleryFiltered($page, 24, strtolower($filter), $pageId); + $imgData = $this->imageRepo->getGalleryFiltered(strtolower($filter), $pageId, $page, 24); return response()->json($imgData); } @@ -265,6 +267,4 @@ public function destroy(EntityRepo $entityRepo, Request $request, $id) $this->imageRepo->destroyImage($image); return response()->json(trans('components.images_deleted')); } - - } diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php index 9dc7d64..17bce7e 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -153,7 +153,9 @@ public function show($bookSlug, $pageSlug) $page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug); } catch (NotFoundException $e) { $page = $this->entityRepo->getPageByOldSlug($pageSlug, $bookSlug); - if ($page === null) throw $e; + if ($page === null) { + throw $e; + } return redirect($page->getUrl()); } @@ -220,7 +222,9 @@ public function edit($bookSlug, $pageSlug) $warnings [] = $this->entityRepo->getUserPageDraftMessage($draft); } - if (count($warnings) > 0) session()->flash('warning', implode("\n", $warnings)); + if (count($warnings) > 0) { + session()->flash('warning', implode("\n", $warnings)); + } $draftsEnabled = $this->signedIn; return view('pages/edit', [ @@ -604,5 +608,4 @@ public function restrict($bookSlug, $pageSlug, Request $request) session()->flash('success', trans('entities.pages_permissions_success')); return redirect($page->getUrl()); } - } diff --git a/app/Http/Controllers/PermissionController.php b/app/Http/Controllers/PermissionController.php index cd064e7..c4c7fe9 100644 --- a/app/Http/Controllers/PermissionController.php +++ b/app/Http/Controllers/PermissionController.php @@ -67,7 +67,9 @@ public function editRole($id) { $this->checkPermission('user-roles-manage'); $role = $this->permissionsRepo->getRoleById($id); - if ($role->hidden) throw new PermissionsException(trans('errors.role_cannot_be_edited')); + if ($role->hidden) { + throw new PermissionsException(trans('errors.role_cannot_be_edited')); + } return view('settings/roles/edit', ['role' => $role]); } diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php index 0faeb0d..0827eeb 100644 --- a/app/Http/Controllers/SearchController.php +++ b/app/Http/Controllers/SearchController.php @@ -104,7 +104,4 @@ public function searchEntitiesAjax(Request $request) return view('search/entity-ajax-list', ['entities' => $entities]); } - } - - diff --git a/app/Http/Controllers/SettingController.php b/app/Http/Controllers/SettingController.php index 70a1263..e0e3514 100644 --- a/app/Http/Controllers/SettingController.php +++ b/app/Http/Controllers/SettingController.php @@ -33,7 +33,9 @@ public function update(Request $request) // Cycles through posted settings and update them foreach ($request->all() as $name => $value) { - if (strpos($name, 'setting-') !== 0) continue; + if (strpos($name, 'setting-') !== 0) { + continue; + } $key = str_replace('setting-', '', trim($name)); Setting::put($key, $value); } @@ -41,5 +43,4 @@ public function update(Request $request) session()->flash('success', trans('settings.settings_save_success')); return redirect('/settings'); } - } diff --git a/app/Http/Controllers/TagController.php b/app/Http/Controllers/TagController.php index 5cf7a0f..815d9e8 100644 --- a/app/Http/Controllers/TagController.php +++ b/app/Http/Controllers/TagController.php @@ -54,5 +54,4 @@ public function getValueSuggestions(Request $request) $suggestions = $this->tagRepo->getValueSuggestions($searchTerm, $tagName); return response()->json($suggestions); } - } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 2fe22f1..7aa7b31 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -102,7 +102,6 @@ public function store(Request $request) } catch (Exception $e) { \Log::error('Failed to save user gravatar image'); } - } return redirect('/settings/users'); @@ -256,7 +255,8 @@ public function showProfilePage($id) * @param Request $request * @return \Illuminate\Http\RedirectResponse */ - public function switchBookView($id, Request $request) { + public function switchBookView($id, Request $request) + { $this->checkPermissionOr('users-manage', function () use ($id) { return $this->currentUser->id == $id; }); @@ -271,5 +271,4 @@ public function switchBookView($id, Request $request) { return redirect()->back(302, [], "/settings/users/$id"); } - } diff --git a/app/Http/Middleware/Localization.php b/app/Http/Middleware/Localization.php index 14c87c3..466c144 100644 --- a/app/Http/Middleware/Localization.php +++ b/app/Http/Middleware/Localization.php @@ -19,7 +19,9 @@ public function handle($request, Closure $next) $locale = $defaultLang; $availableLocales = config('app.locales'); foreach ($request->getLanguages() as $lang) { - if (!in_array($lang, $availableLocales)) continue; + if (!in_array($lang, $availableLocales)) { + continue; + } $locale = $lang; break; } diff --git a/app/Model.php b/app/Model.php index 9ec2b73..498bacb 100644 --- a/app/Model.php +++ b/app/Model.php @@ -15,5 +15,4 @@ public function getRawAttribute($key) { return parent::getAttributeFromArray($key); } - -} \ No newline at end of file +} diff --git a/app/Notifications/ConfirmEmail.php b/app/Notifications/ConfirmEmail.php index 27ac89c..858b121 100644 --- a/app/Notifications/ConfirmEmail.php +++ b/app/Notifications/ConfirmEmail.php @@ -49,5 +49,4 @@ public function toMail($notifiable) ->line(trans('auth.email_confirm_text')) ->action(trans('auth.email_confirm_action'), baseUrl('/register/confirm/' . $this->token)); } - } diff --git a/app/Ownable.php b/app/Ownable.php index f2cfe80..fe58e05 100644 --- a/app/Ownable.php +++ b/app/Ownable.php @@ -1,6 +1,5 @@ textField} as text, {$htmlQuery}, book_id, priority, chapter_id, draft, created_by, updated_by, updated_at, created_at"; } - } diff --git a/app/PageRevision.php b/app/PageRevision.php index 0a97647..ffcc4f9 100644 --- a/app/PageRevision.php +++ b/app/PageRevision.php @@ -1,6 +1,5 @@ page->getUrl() . '/revisions/' . $this->id; - if ($path) return $url . '/' . trim($path, '/'); + if ($path) { + return $url . '/' . trim($path, '/'); + } return $url; } @@ -58,5 +59,4 @@ public static function isA($type) { return $type === 'revision'; } - } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index ef3ee6c..b06b2f3 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -15,12 +15,12 @@ class AppServiceProvider extends ServiceProvider public function boot() { // Custom validation methods - Validator::extend('is_image', function($attribute, $value, $parameters, $validator) { + Validator::extend('is_image', function ($attribute, $value, $parameters, $validator) { $imageMimes = ['image/png', 'image/bmp', 'image/gif', 'image/jpeg', 'image/jpg', 'image/tiff', 'image/webp']; return in_array($value->getMimeType(), $imageMimes); }); - \Blade::directive('icon', function($expression) { + \Blade::directive('icon', function ($expression) { return ""; }); @@ -35,7 +35,7 @@ public function boot() */ public function register() { - $this->app->singleton(SettingService::class, function($app) { + $this->app->singleton(SettingService::class, function ($app) { return new SettingService($app->make(Setting::class), $app->make('Illuminate\Contracts\Cache\Repository')); }); } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 509b861..d1fac56 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -25,7 +25,7 @@ public function boot() */ public function register() { - Auth::provider('ldap', function($app, array $config) { + Auth::provider('ldap', function ($app, array $config) { return new LdapUserProvider($config['model'], $app[LdapService::class]); }); } diff --git a/app/Providers/CustomFacadeProvider.php b/app/Providers/CustomFacadeProvider.php index b2c7acf..a97512e 100644 --- a/app/Providers/CustomFacadeProvider.php +++ b/app/Providers/CustomFacadeProvider.php @@ -34,28 +34,28 @@ public function boot() */ public function register() { - $this->app->bind('activity', function() { + $this->app->bind('activity', function () { return new ActivityService( $this->app->make(Activity::class), $this->app->make(PermissionService::class) ); }); - $this->app->bind('views', function() { + $this->app->bind('views', function () { return new ViewService( $this->app->make(View::class), $this->app->make(PermissionService::class) ); }); - $this->app->bind('setting', function() { + $this->app->bind('setting', function () { return new SettingService( $this->app->make(Setting::class), $this->app->make(Repository::class) ); }); - $this->app->bind('images', function() { + $this->app->bind('images', function () { return new ImageService( $this->app->make(ImageManager::class), $this->app->make(Factory::class), diff --git a/app/Providers/LdapUserProvider.php b/app/Providers/LdapUserProvider.php index a15257a..1dc789c 100644 --- a/app/Providers/LdapUserProvider.php +++ b/app/Providers/LdapUserProvider.php @@ -2,7 +2,6 @@ namespace BookStack\Providers; - use BookStack\Role; use BookStack\Services\LdapService; use BookStack\User; @@ -102,7 +101,9 @@ public function retrieveByCredentials(array $credentials) { // Get user via LDAP $userDetails = $this->ldapService->getUserDetails($credentials['username']); - if ($userDetails === null) return null; + if ($userDetails === null) { + return null; + } // Search current user base by looking up a uid $model = $this->createModel(); @@ -110,7 +111,9 @@ public function retrieveByCredentials(array $credentials) ->where('external_auth_id', $userDetails['uid']) ->first(); - if ($currentUser !== null) return $currentUser; + if ($currentUser !== null) { + return $currentUser; + } $model->name = $userDetails['name']; $model->external_auth_id = $userDetails['uid']; diff --git a/app/Providers/PaginationServiceProvider.php b/app/Providers/PaginationServiceProvider.php index ec41267..3a695c5 100644 --- a/app/Providers/PaginationServiceProvider.php +++ b/app/Providers/PaginationServiceProvider.php @@ -1,6 +1,5 @@ id; $comment = $this->comment->newInstance($data); @@ -81,7 +82,9 @@ public function delete($comment) protected function getNextLocalId(Entity $entity) { $comments = $entity->comments(false)->orderBy('local_id', 'desc')->first(); - if ($comments === null) return 1; + if ($comments === null) { + return 1; + } return $comments->local_id + 1; } -} \ No newline at end of file +} diff --git a/app/Repos/EntityRepo.php b/app/Repos/EntityRepo.php index 2c92e19..64f7a08 100644 --- a/app/Repos/EntityRepo.php +++ b/app/Repos/EntityRepo.php @@ -77,11 +77,15 @@ class EntityRepo * @param SearchService $searchService */ public function __construct( - Book $book, Chapter $chapter, Page $page, PageRevision $pageRevision, - ViewService $viewService, PermissionService $permissionService, - TagRepo $tagRepo, SearchService $searchService - ) - { + Book $book, + Chapter $chapter, + Page $page, + PageRevision $pageRevision, + ViewService $viewService, + PermissionService $permissionService, + TagRepo $tagRepo, + SearchService $searchService + ) { $this->book = $book; $this->chapter = $chapter; $this->page = $page; @@ -163,14 +167,16 @@ public function getBySlug($type, $slug, $bookSlug = false) $q = $this->entityQuery($type)->where('slug', '=', $slug); if (strtolower($type) === 'chapter' || strtolower($type) === 'page') { - $q = $q->where('book_id', '=', function($query) use ($bookSlug) { + $q = $q->where('book_id', '=', function ($query) use ($bookSlug) { $query->select('id') ->from($this->book->getTable()) ->where('slug', '=', $bookSlug)->limit(1); }); } $entity = $q->first(); - if ($entity === null) throw new NotFoundException(trans('errors.' . strtolower($type) . '_not_found')); + if ($entity === null) { + throw new NotFoundException(trans('errors.' . strtolower($type) . '_not_found')); + } return $entity; } @@ -205,7 +211,9 @@ public function getPageByOldSlug($pageSlug, $bookSlug) public function getAll($type, $count = 20, $permission = 'view') { $q = $this->entityQuery($type, false, $permission)->orderBy('name', 'asc'); - if ($count !== false) $q = $q->take($count); + if ($count !== false) { + $q = $q->take($count); + } return $q->get(); } @@ -232,7 +240,9 @@ public function getRecentlyCreated($type, $count = 20, $page = 0, $additionalQue { $query = $this->permissionService->enforceEntityRestrictions($type, $this->getEntity($type)) ->orderBy('created_at', 'desc'); - if (strtolower($type) === 'page') $query = $query->where('draft', '=', false); + if (strtolower($type) === 'page') { + $query = $query->where('draft', '=', false); + } if ($additionalQuery !== false && is_callable($additionalQuery)) { $additionalQuery($query); } @@ -251,7 +261,9 @@ public function getRecentlyUpdated($type, $count = 20, $page = 0, $additionalQue { $query = $this->permissionService->enforceEntityRestrictions($type, $this->getEntity($type)) ->orderBy('updated_at', 'desc'); - if (strtolower($type) === 'page') $query = $query->where('draft', '=', false); + if (strtolower($type) === 'page') { + $query = $query->where('draft', '=', false); + } if ($additionalQuery !== false && is_callable($additionalQuery)) { $additionalQuery($query); } @@ -348,12 +360,16 @@ public function getBookChildren(Book $book, $filterDrafts = false, $renderPages $parents[$key] = $entities[$index]; $parents[$key]->setAttribute('pages', collect()); } - if ($entities[$index]->chapter_id === 0 || $entities[$index]->chapter_id === '0') $tree[] = $entities[$index]; + if ($entities[$index]->chapter_id === 0 || $entities[$index]->chapter_id === '0') { + $tree[] = $entities[$index]; + } $entities[$index]->book = $book; } foreach ($entities as $entity) { - if ($entity->chapter_id === 0 || $entity->chapter_id === '0') continue; + if ($entity->chapter_id === 0 || $entity->chapter_id === '0') { + continue; + } $parentKey = 'BookStack\\Chapter:' . $entity->chapter_id; if (!isset($parents[$parentKey])) { $tree[] = $entity; @@ -432,7 +448,9 @@ protected function slugExists($type, $slug, $currentId = false, $bookId = false) if (strtolower($type) === 'page' || strtolower($type) === 'chapter') { $query = $query->where('book_id', '=', $bookId); } - if ($currentId) $query = $query->where('id', '!=', $currentId); + if ($currentId) { + $query = $query->where('id', '!=', $currentId); + } return $query->count() > 0; } @@ -559,7 +577,9 @@ protected function nameToSlug($name) $slug = preg_replace('/[\+\/\\\?\@\}\{\.\,\=\[\]\#\&\!\*\'\;\:\$\%]/', '', mb_strtolower($name)); $slug = preg_replace('/\s{2,}/', ' ', $slug); $slug = str_replace(' ', '-', $slug); - if ($slug === "") $slug = substr(md5(rand(1, 500)), 0, 5); + if ($slug === "") { + $slug = substr(md5(rand(1, 500)), 0, 5); + } return $slug; } @@ -600,7 +620,9 @@ public function publishPageDraft(Page $draftPage, array $input) public function savePageRevision(Page $page, $summary = null) { $revision = $this->pageRevision->newInstance($page->toArray()); - if (setting('app-editor') !== 'markdown') $revision->markdown = ''; + if (setting('app-editor') !== 'markdown') { + $revision->markdown = ''; + } $revision->page_id = $page->id; $revision->slug = $page->slug; $revision->book_slug = $page->book->slug; @@ -628,7 +650,9 @@ public function savePageRevision(Page $page, $summary = null) */ protected function formatHtml($htmlText) { - if ($htmlText == '') return $htmlText; + if ($htmlText == '') { + return $htmlText; + } libxml_use_internal_errors(true); $doc = new DOMDocument(); $doc->loadHTML(mb_convert_encoding($htmlText, 'HTML-ENTITIES', 'UTF-8')); @@ -642,7 +666,9 @@ protected function formatHtml($htmlText) foreach ($childNodes as $index => $childNode) { /** @var \DOMElement $childNode */ - if (get_class($childNode) !== 'DOMElement') continue; + if (get_class($childNode) !== 'DOMElement') { + continue; + } // Overwrite id if not a BookStack custom id if ($childNode->hasAttribute('id')) { @@ -689,13 +715,17 @@ public function renderPage(Page $page, $ignorePermissions = false) $content = $page->html; $matches = []; preg_match_all("/{{@\s?([0-9].*?)}}/", $content, $matches); - if (count($matches[0]) === 0) return $content; + if (count($matches[0]) === 0) { + return $content; + } $topLevelTags = ['table', 'ul', 'ol']; foreach ($matches[1] as $index => $includeId) { $splitInclude = explode('#', $includeId, 2); $pageId = intval($splitInclude[0]); - if (is_nan($pageId)) continue; + if (is_nan($pageId)) { + continue; + } $matchedPage = $this->getById('page', $pageId, false, $ignorePermissions); if ($matchedPage === null) { @@ -755,7 +785,9 @@ public function getDraftPage(Book $book, $chapter = false) $page->updated_by = user()->id; $page->draft = true; - if ($chapter) $page->chapter_id = $chapter->id; + if ($chapter) { + $page->chapter_id = $chapter->id; + } $book->pages()->save($page); $page = $this->page->find($page->id); @@ -786,14 +818,18 @@ public function searchForImage($imageString) */ public function getPageNav($pageContent) { - if ($pageContent == '') return []; + if ($pageContent == '') { + return []; + } libxml_use_internal_errors(true); $doc = new DOMDocument(); $doc->loadHTML(mb_convert_encoding($pageContent, 'HTML-ENTITIES', 'UTF-8')); $xPath = new DOMXPath($doc); $headers = $xPath->query("//h1|//h2|//h3|//h4|//h5|//h6"); - if (is_null($headers)) return []; + if (is_null($headers)) { + return []; + } $tree = collect([]); foreach ($headers as $header) { @@ -809,7 +845,7 @@ public function getPageNav($pageContent) // Normalise headers if only smaller headers have been used if (count($tree) > 0) { $minLevel = $tree->pluck('level')->min(); - $tree = $tree->map(function($header) use ($minLevel) { + $tree = $tree->map(function ($header) use ($minLevel) { $header['level'] -= ($minLevel - 2); return $header; }); @@ -845,7 +881,9 @@ public function updatePage(Page $page, $book_id, $input) $page->fill($input); $page->html = $this->formatHtml($input['html']); $page->text = $this->pageToPlainText($page); - if (setting('app-editor') !== 'markdown') $page->markdown = ''; + if (setting('app-editor') !== 'markdown') { + $page->markdown = ''; + } $page->updated_by = $userId; $page->revision_count++; $page->save(); @@ -907,7 +945,9 @@ public function getUserPageDraft(Page $page, $userId) public function getUserPageDraftMessage(PageRevision $draft) { $message = trans('entities.pages_editing_draft_notification', ['timeDiff' => $draft->updated_at->diffForHumans()]); - if ($draft->page->updated_at->timestamp <= $draft->updated_at->timestamp) return $message; + if ($draft->page->updated_at->timestamp <= $draft->updated_at->timestamp) { + return $message; + } return $message . "\n" . trans('entities.pages_draft_edited_notification'); } @@ -1003,7 +1043,9 @@ public function updatePageDraft(Page $page, $data = []) } $draft->fill($data); - if (setting('app-editor') !== 'markdown') $draft->markdown = ''; + if (setting('app-editor') !== 'markdown') { + $draft->markdown = ''; + } $draft->save(); return $draft; @@ -1110,17 +1152,4 @@ public function destroyPage(Page $page) $page->delete(); } - } - - - - - - - - - - - - diff --git a/app/Repos/ImageRepo.php b/app/Repos/ImageRepo.php index 0c15a43..ec2fda1 100644 --- a/app/Repos/ImageRepo.php +++ b/app/Repos/ImageRepo.php @@ -92,7 +92,7 @@ public function getPaginatedByType($type, $page = 0, $pageSize = 24, $userFilter * @param string $searchTerm * @return array */ - public function searchPaginatedByType($type, $page = 0, $pageSize = 24, $searchTerm) + public function searchPaginatedByType($type, $searchTerm, $page = 0, $pageSize = 24) { $images = $this->image->where('type', '=', strtolower($type))->where('name', 'LIKE', '%' . $searchTerm . '%'); return $this->returnPaginated($images, $page, $pageSize); @@ -101,13 +101,13 @@ public function searchPaginatedByType($type, $page = 0, $pageSize = 24, $searchT /** * Get gallery images with a particular filter criteria such as * being within the current book or page. - * @param int $pagination - * @param int $pageSize * @param $filter * @param $pageId + * @param int $pageNum + * @param int $pageSize * @return array */ - public function getGalleryFiltered($pagination = 0, $pageSize = 24, $filter, $pageId) + public function getGalleryFiltered($filter, $pageId, $pageNum = 0, $pageSize = 24) { $images = $this->image->where('type', '=', 'gallery'); @@ -120,7 +120,7 @@ public function getGalleryFiltered($pagination = 0, $pageSize = 24, $filter, $pa $images = $images->whereIn('uploaded_to', $validPageIds); } - return $this->returnPaginated($images, $pagination, $pageSize); + return $this->returnPaginated($images, $pageNum, $pageSize); } /** @@ -254,5 +254,4 @@ public function isValidType($type) $validTypes = ['drawing', 'gallery', 'cover', 'system', 'user']; return in_array($type, $validTypes); } - -} \ No newline at end of file +} diff --git a/app/Repos/PermissionsRepo.php b/app/Repos/PermissionsRepo.php index aa58d17..6f7ea1d 100644 --- a/app/Repos/PermissionsRepo.php +++ b/app/Repos/PermissionsRepo.php @@ -1,6 +1,5 @@ permissionService->deleteJointPermissionsForRole($role); $role->delete(); } - -} \ No newline at end of file +} diff --git a/app/Repos/TagRepo.php b/app/Repos/TagRepo.php index 5edd6df..ab1805a 100644 --- a/app/Repos/TagRepo.php +++ b/app/Repos/TagRepo.php @@ -52,7 +52,9 @@ public function getEntity($entityType, $entityId, $action = 'view') public function getForEntity($entityType, $entityId) { $entity = $this->getEntity($entityType, $entityId); - if ($entity === null) return collect(); + if ($entity === null) { + return collect(); + } return $entity->tags; } @@ -95,7 +97,9 @@ public function getValueSuggestions($searchTerm = false, $tagName = false) $query = $query->orderBy('count', 'desc')->take(50); } - if ($tagName !== false) $query = $query->where('name', '=', $tagName); + if ($tagName !== false) { + $query = $query->where('name', '=', $tagName); + } $query = $this->permissionService->filterRestrictedEntityRelations($query, 'tags', 'entity_id', 'entity_type'); return $query->get(['value'])->pluck('value'); @@ -112,7 +116,9 @@ public function saveTagsToEntity(Entity $entity, $tags = []) $entity->tags()->delete(); $newTags = []; foreach ($tags as $tag) { - if (trim($tag['name']) === '') continue; + if (trim($tag['name']) === '') { + continue; + } $newTags[] = $this->newInstanceFromInput($tag); } @@ -132,5 +138,4 @@ protected function newInstanceFromInput($input) $values = ['name' => $name, 'value' => $value]; return $this->tag->newInstance($values); } - -} \ No newline at end of file +} diff --git a/app/Repos/UserRepo.php b/app/Repos/UserRepo.php index e21568d..d329c30 100644 --- a/app/Repos/UserRepo.php +++ b/app/Repos/UserRepo.php @@ -60,13 +60,13 @@ public function getAllUsers() * @param $sortData * @return \Illuminate\Database\Eloquent\Builder|static */ - public function getAllUsersPaginatedAndSorted($count = 20, $sortData) + public function getAllUsersPaginatedAndSorted($count, $sortData) { $query = $this->user->with('roles', 'avatar')->orderBy($sortData['sort'], $sortData['order']); if ($sortData['search']) { $term = '%' . $sortData['search'] . '%'; - $query->where(function($query) use ($term) { + $query->where(function ($query) use ($term) { $query->where('name', 'like', $term) ->orWhere('email', 'like', $term); }); @@ -107,7 +107,9 @@ public function registerNew(array $data) public function attachDefaultRole($user) { $roleId = setting('registration-role'); - if ($roleId === false) $roleId = $this->role->first()->id; + if ($roleId === false) { + $roleId = $this->role->first()->id; + } $user->attachRoleId($roleId); } @@ -118,10 +120,14 @@ public function attachDefaultRole($user) */ public function isOnlyAdmin(User $user) { - if (!$user->hasSystemRole('admin')) return false; + if (!$user->hasSystemRole('admin')) { + return false; + } $adminRole = $this->role->getSystemRole('admin'); - if ($adminRole->users->count() > 1) return false; + if ($adminRole->users->count() > 1) { + return false; + } return true; } @@ -222,5 +228,4 @@ public function getRestrictableRoles() { return $this->role->where('system_name', '!=', 'admin')->get(); } - -} \ No newline at end of file +} diff --git a/app/Role.php b/app/Role.php index bf9685e..e86854e 100644 --- a/app/Role.php +++ b/app/Role.php @@ -1,6 +1,5 @@ getRelationValue('permissions'); foreach ($permissions as $permission) { - if ($permission->getRawAttribute('name') === $permissionName) return true; + if ($permission->getRawAttribute('name') === $permissionName) { + return true; + } } return false; } @@ -91,5 +92,4 @@ public static function visible() { return static::where('hidden', '=', false)->orderBy('name')->get(); } - } diff --git a/app/RolePermission.php b/app/RolePermission.php index ded6f63..366c167 100644 --- a/app/RolePermission.php +++ b/app/RolePermission.php @@ -1,6 +1,5 @@ belongsToMany(Role::class, 'permission_role','permission_id', 'role_id'); + return $this->belongsToMany(Role::class, 'permission_role', 'permission_id', 'role_id'); } /** diff --git a/app/SearchTerm.php b/app/SearchTerm.php index 50df340..ee6c721 100644 --- a/app/SearchTerm.php +++ b/app/SearchTerm.php @@ -14,5 +14,4 @@ public function entity() { return $this->morphTo('entity'); } - } diff --git a/app/Services/ActivityService.php b/app/Services/ActivityService.php index 2368ba1..3fc7e7e 100644 --- a/app/Services/ActivityService.php +++ b/app/Services/ActivityService.php @@ -170,5 +170,4 @@ protected function setNotification($activityKey) Session::flash('success', $message); } } - -} \ No newline at end of file +} diff --git a/app/Services/AttachmentService.php b/app/Services/AttachmentService.php index 9403b86..381e447 100644 --- a/app/Services/AttachmentService.php +++ b/app/Services/AttachmentService.php @@ -14,7 +14,9 @@ class AttachmentService extends UploadService */ protected function getStorage() { - if ($this->storageInstance !== null) return $this->storageInstance; + if ($this->storageInstance !== null) { + return $this->storageInstance; + } $storageType = config('filesystems.default'); @@ -205,5 +207,4 @@ protected function putFileInStorage($attachmentName, UploadedFile $uploadedFile) return $attachmentPath; } - -} \ No newline at end of file +} diff --git a/app/Services/EmailConfirmationService.php b/app/Services/EmailConfirmationService.php index 8eb5270..9ee69ef 100644 --- a/app/Services/EmailConfirmationService.php +++ b/app/Services/EmailConfirmationService.php @@ -108,6 +108,4 @@ protected function getToken() } return $token; } - - -} \ No newline at end of file +} diff --git a/app/Services/ExportService.php b/app/Services/ExportService.php index 1e4e994..ada2261 100644 --- a/app/Services/ExportService.php +++ b/app/Services/ExportService.php @@ -42,7 +42,7 @@ public function pageToContainedHtml(Page $page) public function chapterToContainedHtml(Chapter $chapter) { $pages = $this->entityRepo->getChapterChildren($chapter); - $pages->each(function($page) { + $pages->each(function ($page) { $page->html = $this->entityRepo->renderPage($page); }); $html = view('chapters/export', [ @@ -89,7 +89,7 @@ public function pageToPdf(Page $page) public function chapterToPdf(Chapter $chapter) { $pages = $this->entityRepo->getChapterChildren($chapter); - $pages->each(function($page) { + $pages->each(function ($page) { $page->html = $this->entityRepo->renderPage($page); }); $html = view('chapters/export', [ @@ -163,7 +163,9 @@ protected function containHtml($htmlContent) $pathString = public_path(trim($relString, '/')); } - if ($isLocal && !file_exists($pathString)) continue; + if ($isLocal && !file_exists($pathString)) { + continue; + } try { if ($isLocal) { $imageContent = file_get_contents($pathString); @@ -173,7 +175,9 @@ protected function containHtml($htmlContent) $imageContent = curl_exec($ch); $err = curl_error($ch); curl_close($ch); - if ($err) throw new \Exception("Image fetch failed, Received error: " . $err); + if ($err) { + throw new \Exception("Image fetch failed, Received error: " . $err); + } } $imageEncoded = 'data:image/' . pathinfo($pathString, PATHINFO_EXTENSION) . ';base64,' . base64_encode($imageContent); $newImageString = str_replace($srcString, $imageEncoded, $oldImgString); @@ -257,17 +261,4 @@ public function bookToPlainText(Book $book) } return $text; } - } - - - - - - - - - - - - diff --git a/app/Services/Facades/Activity.php b/app/Services/Facades/Activity.php index ea04cfc..d24e39d 100644 --- a/app/Services/Facades/Activity.php +++ b/app/Services/Facades/Activity.php @@ -1,6 +1,5 @@ $url])); + if ($imageData === false) { + throw new \Exception(trans('errors.cannot_get_image_from_url', ['url' => $url])); + } return $this->saveNew($imageName, $imageData, $type); } @@ -121,7 +123,9 @@ private function saveNew($imageName, $imageData, $type, $uploadedTo = 0) $secureUploads = setting('app-secure-images'); $imageName = str_replace(' ', '-', $imageName); - if ($secureUploads) $imageName = str_random(16) . '-' . $imageName; + if ($secureUploads) { + $imageName = str_random(16) . '-' . $imageName; + } $imagePath = '/uploads/images/' . $type . '/' . Date('Y-m-M') . '/'; @@ -255,9 +259,13 @@ public function destroyImage(Image $image) // Cleanup of empty folders foreach ($storage->directories($imageFolder) as $directory) { - if ($this->isFolderEmpty($directory)) $storage->deleteDirectory($directory); + if ($this->isFolderEmpty($directory)) { + $storage->deleteDirectory($directory); + } + } + if ($this->isFolderEmpty($imageFolder)) { + $storage->deleteDirectory($imageFolder); } - if ($this->isFolderEmpty($imageFolder)) $storage->deleteDirectory($imageFolder); $image->delete(); return true; @@ -308,6 +316,4 @@ private function getPublicUrl($filePath) $basePath = ($this->storageUrl == false) ? baseUrl('/') : $this->storageUrl; return rtrim($basePath, '/') . $filePath; } - - } diff --git a/app/Services/Ldap.php b/app/Services/Ldap.php index 9c3bec3..29270da 100644 --- a/app/Services/Ldap.php +++ b/app/Services/Ldap.php @@ -1,6 +1,5 @@ config['follow_referrals'] ? 1 : 0; $this->ldap->setOption($ldapConnection, LDAP_OPT_REFERRALS, $followReferrals); $users = $this->ldap->searchAndGetEntries($ldapConnection, $baseDn, $userFilter, ['cn', 'uid', 'dn', $emailAttr]); - if ($users['count'] === 0) return null; + if ($users['count'] === 0) { + return null; + } $user = $users[0]; return [ @@ -66,8 +67,12 @@ public function getUserDetails($userName) public function validateUserCredentials(Authenticatable $user, $username, $password) { $ldapUser = $this->getUserDetails($username); - if ($ldapUser === null) return false; - if ($ldapUser['uid'] !== $user->external_auth_id) return false; + if ($ldapUser === null) { + return false; + } + if ($ldapUser['uid'] !== $user->external_auth_id) { + return false; + } $ldapConnection = $this->getConnection(); try { @@ -97,7 +102,9 @@ protected function bindSystemUser($connection) $ldapBind = $this->ldap->bind($connection, $ldapDn, $ldapPass); } - if (!$ldapBind) throw new LdapException(($isAnonymous ? trans('errors.ldap_fail_anonymous') : trans('errors.ldap_fail_authed'))); + if (!$ldapBind) { + throw new LdapException(($isAnonymous ? trans('errors.ldap_fail_anonymous') : trans('errors.ldap_fail_authed'))); + } } /** @@ -108,7 +115,9 @@ protected function bindSystemUser($connection) */ protected function getConnection() { - if ($this->ldapConnection !== null) return $this->ldapConnection; + if ($this->ldapConnection !== null) { + return $this->ldapConnection; + } // Check LDAP extension in installed if (!function_exists('ldap_connect') && config('app.env') !== 'testing') { @@ -118,7 +127,9 @@ protected function getConnection() // Get port from server string and protocol if specified. $ldapServer = explode(':', $this->config['server']); $hasProtocol = preg_match('/^ldaps{0,1}\:\/\//', $this->config['server']) === 1; - if (!$hasProtocol) array_unshift($ldapServer, ''); + if (!$hasProtocol) { + array_unshift($ldapServer, ''); + } $hostName = $ldapServer[0] . ($hasProtocol?':':'') . $ldapServer[1]; $defaultPort = $ldapServer[0] === 'ldaps' ? 636 : 389; $ldapConnection = $this->ldap->connect($hostName, count($ldapServer) > 2 ? intval($ldapServer[2]) : $defaultPort); @@ -151,5 +162,4 @@ protected function buildFilter($filterString, array $attrs) } return strtr($filterString, $newAttrs); } - -} \ No newline at end of file +} diff --git a/app/Services/PermissionService.php b/app/Services/PermissionService.php index 4f8b4e0..331ed06 100644 --- a/app/Services/PermissionService.php +++ b/app/Services/PermissionService.php @@ -88,7 +88,9 @@ protected function getBook($bookId) } $book = $this->book->find($bookId); - if ($book === null) $book = false; + if ($book === null) { + $book = false; + } if (isset($this->entityCache['books'])) { $this->entityCache['books']->put($bookId, $book); } @@ -108,7 +110,9 @@ protected function getChapter($chapterId) } $chapter = $this->chapter->find($chapterId); - if ($chapter === null) $chapter = false; + if ($chapter === null) { + $chapter = false; + } if (isset($this->entityCache['chapters'])) { $this->entityCache['chapters']->put($chapterId, $chapter); } @@ -122,7 +126,9 @@ protected function getChapter($chapterId) */ protected function getRoles() { - if ($this->userRoles !== false) return $this->userRoles; + if ($this->userRoles !== false) { + return $this->userRoles; + } $roles = []; @@ -161,9 +167,9 @@ public function buildJointPermissions() */ protected function bookFetchQuery() { - return $this->book->newQuery()->select(['id', 'restricted', 'created_by'])->with(['chapters' => function($query) { + return $this->book->newQuery()->select(['id', 'restricted', 'created_by'])->with(['chapters' => function ($query) { $query->select(['id', 'restricted', 'created_by', 'book_id']); - }, 'pages' => function($query) { + }, 'pages' => function ($query) { $query->select(['id', 'restricted', 'created_by', 'book_id', 'chapter_id']); }]); } @@ -174,7 +180,8 @@ protected function bookFetchQuery() * @param array $roles * @param bool $deleteOld */ - protected function buildJointPermissionsForBooks($books, $roles, $deleteOld = false) { + protected function buildJointPermissionsForBooks($books, $roles, $deleteOld = false) + { $entities = clone $books; /** @var Book $book */ @@ -187,7 +194,9 @@ protected function buildJointPermissionsForBooks($books, $roles, $deleteOld = fa } } - if ($deleteOld) $this->deleteManyJointPermissionsForEntities($entities->all()); + if ($deleteOld) { + $this->deleteManyJointPermissionsForEntities($entities->all()); + } $this->createManyJointPermissions($entities, $roles); } @@ -261,7 +270,7 @@ public function deleteJointPermissionsForRole(Role $role) */ protected function deleteManyJointPermissionsForRoles($roles) { - $roleIds = array_map(function($role) { + $roleIds = array_map(function ($role) { return $role->id; }, $roles); $this->jointPermission->newQuery()->whereIn('role_id', $roleIds)->delete(); @@ -282,21 +291,22 @@ public function deleteJointPermissionsForEntity(Entity $entity) */ protected function deleteManyJointPermissionsForEntities($entities) { - if (count($entities) === 0) return; + if (count($entities) === 0) { + return; + } - $this->db->transaction(function() use ($entities) { + $this->db->transaction(function () use ($entities) { foreach (array_chunk($entities, 1000) as $entityChunk) { $query = $this->db->table('joint_permissions'); foreach ($entityChunk as $entity) { - $query->orWhere(function(QueryBuilder $query) use ($entity) { + $query->orWhere(function (QueryBuilder $query) use ($entity) { $query->where('entity_id', '=', $entity->id) ->where('entity_type', '=', $entity->getMorphClass()); }); } $query->delete(); } - }); } @@ -315,7 +325,7 @@ protected function createManyJointPermissions($entities, $roles) $permissionFetch = $this->entityPermission->newQuery(); foreach ($entities as $entity) { $entityRestrictedMap[$entity->getMorphClass() . ':' . $entity->id] = boolval($entity->getRawAttribute('restricted')); - $permissionFetch->orWhere(function($query) use ($entity) { + $permissionFetch->orWhere(function ($query) use ($entity) { $query->where('restrictable_id', '=', $entity->id)->where('restrictable_type', '=', $entity->getMorphClass()); }); } @@ -346,7 +356,7 @@ protected function createManyJointPermissions($entities, $roles) } } - $this->db->transaction(function() use ($jointPermissions) { + $this->db->transaction(function () use ($jointPermissions) { foreach (array_chunk($jointPermissions, 1000) as $jointPermissionChunk) { $this->db->table('joint_permissions')->insert($jointPermissionChunk); } @@ -362,8 +372,12 @@ protected function createManyJointPermissions($entities, $roles) protected function getActions(Entity $entity) { $baseActions = ['view', 'update', 'delete']; - if ($entity->isA('chapter') || $entity->isA('book')) $baseActions[] = 'page-create'; - if ($entity->isA('book')) $baseActions[] = 'chapter-create'; + if ($entity->isA('chapter') || $entity->isA('book')) { + $baseActions[] = 'page-create'; + } + if ($entity->isA('book')) { + $baseActions[] = 'chapter-create'; + } return $baseActions; } @@ -412,7 +426,10 @@ protected function createJointPermissionData(Entity $entity, Role $role, $action } } - return $this->createJointPermissionDataArray($entity, $role, $action, + return $this->createJointPermissionDataArray( + $entity, + $role, + $action, ($hasExplicitAccessToParents || ($roleHasPermission && $hasPermissiveAccessToParents)), ($hasExplicitAccessToParents || ($roleHasPermissionOwn && $hasPermissiveAccessToParents)) ); @@ -426,7 +443,8 @@ protected function createJointPermissionData(Entity $entity, Role $role, $action * @param $action * @return bool */ - protected function mapHasActiveRestriction($entityMap, Entity $entity, Role $role, $action) { + protected function mapHasActiveRestriction($entityMap, Entity $entity, Role $role, $action) + { $key = $entity->getMorphClass() . ':' . $entity->getRawAttribute('id') . ':' . $role->getRawAttribute('id') . ':' . $action; return isset($entityMap[$key]) ? $entityMap[$key] : false; } @@ -545,11 +563,12 @@ protected function entityRestrictionQuery($query) * @param bool $fetchPageContent * @return QueryBuilder */ - public function bookChildrenQuery($book_id, $filterDrafts = false, $fetchPageContent = false) { - $pageSelect = $this->db->table('pages')->selectRaw($this->page->entityRawQuery($fetchPageContent))->where('book_id', '=', $book_id)->where(function($query) use ($filterDrafts) { + public function bookChildrenQuery($book_id, $filterDrafts = false, $fetchPageContent = false) + { + $pageSelect = $this->db->table('pages')->selectRaw($this->page->entityRawQuery($fetchPageContent))->where('book_id', '=', $book_id)->where(function ($query) use ($filterDrafts) { $query->where('draft', '=', 0); if (!$filterDrafts) { - $query->orWhere(function($query) { + $query->orWhere(function ($query) { $query->where('draft', '=', 1)->where('created_by', '=', $this->currentUser()->id); }); } @@ -562,8 +581,8 @@ public function bookChildrenQuery($book_id, $filterDrafts = false, $fetchPageCon $whereQuery = $this->db->table('joint_permissions as jp')->selectRaw('COUNT(*)') ->whereRaw('jp.entity_id=U.id')->whereRaw('jp.entity_type=U.entity_type') ->where('jp.action', '=', 'view')->whereIn('jp.role_id', $this->getRoles()) - ->where(function($query) { - $query->where('jp.has_permission', '=', 1)->orWhere(function($query) { + ->where(function ($query) { + $query->where('jp.has_permission', '=', 1)->orWhere(function ($query) { $query->where('jp.has_permission_own', '=', 1)->where('jp.created_by', '=', $this->currentUser()->id); }); }); @@ -715,5 +734,4 @@ private function clean() $this->userRoles = false; $this->isAdminUser = null; } - -} \ No newline at end of file +} diff --git a/app/Services/SearchService.php b/app/Services/SearchService.php index a8784de..6786c5c 100644 --- a/app/Services/SearchService.php +++ b/app/Services/SearchService.php @@ -83,7 +83,9 @@ public function searchEntities($searchString, $entityType = 'all', $page = 1, $c $total = 0; foreach ($entityTypesToSearch as $entityType) { - if (!in_array($entityType, $entityTypes)) continue; + if (!in_array($entityType, $entityTypes)) { + continue; + } $search = $this->searchEntityTable($terms, $entityType, $page, $count); $total += $this->searchEntityTable($terms, $entityType, $page, $count, true); $results = $results->merge($search); @@ -111,7 +113,9 @@ public function searchBook($bookId, $searchString) $results = collect(); foreach ($entityTypesToSearch as $entityType) { - if (!in_array($entityType, $entityTypes)) continue; + if (!in_array($entityType, $entityTypes)) { + continue; + } $search = $this->buildEntitySearchQuery($terms, $entityType)->where('book_id', '=', $bookId)->take(20)->get(); $results = $results->merge($search); } @@ -143,7 +147,9 @@ public function searchChapter($chapterId, $searchString) public function searchEntityTable($terms, $entityType = 'page', $page = 1, $count = 20, $getCount = false) { $query = $this->buildEntitySearchQuery($terms, $entityType); - if ($getCount) return $query->count(); + if ($getCount) { + return $query->count(); + } $query = $query->skip(($page-1) * $count)->take($count); return $query->get(); @@ -164,12 +170,12 @@ protected function buildEntitySearchQuery($terms, $entityType = 'page') if (count($terms['search']) > 0) { $subQuery = $this->db->table('search_terms')->select('entity_id', 'entity_type', \DB::raw('SUM(score) as score')); $subQuery->where('entity_type', '=', 'BookStack\\' . ucfirst($entityType)); - $subQuery->where(function(Builder $query) use ($terms) { + $subQuery->where(function (Builder $query) use ($terms) { foreach ($terms['search'] as $inputTerm) { $query->orWhere('term', 'like', $inputTerm .'%'); } })->groupBy('entity_type', 'entity_id'); - $entitySelect->join(\DB::raw('(' . $subQuery->toSql() . ') as s'), function(JoinClause $join) { + $entitySelect->join(\DB::raw('(' . $subQuery->toSql() . ') as s'), function (JoinClause $join) { $join->on('id', '=', 'entity_id'); })->selectRaw($entity->getTable().'.*, s.score')->orderBy('score', 'desc'); $entitySelect->mergeBindings($subQuery); @@ -177,7 +183,7 @@ protected function buildEntitySearchQuery($terms, $entityType = 'page') // Handle exact term matching if (count($terms['exact']) > 0) { - $entitySelect->where(function(\Illuminate\Database\Eloquent\Builder $query) use ($terms, $entity) { + $entitySelect->where(function (\Illuminate\Database\Eloquent\Builder $query) use ($terms, $entity) { foreach ($terms['exact'] as $inputTerm) { $query->where(function (\Illuminate\Database\Eloquent\Builder $query) use ($inputTerm, $entity) { $query->where('name', 'like', '%'.$inputTerm .'%') @@ -195,7 +201,9 @@ protected function buildEntitySearchQuery($terms, $entityType = 'page') // Handle filters foreach ($terms['filters'] as $filterTerm => $filterValue) { $functionName = camel_case('filter_' . $filterTerm); - if (method_exists($this, $functionName)) $this->$functionName($entitySelect, $entity, $filterValue); + if (method_exists($this, $functionName)) { + $this->$functionName($entitySelect, $entity, $filterValue); + } } return $this->permissionService->enforceEntityRestrictions($entityType, $entitySelect, 'view'); @@ -234,7 +242,9 @@ protected function parseSearchString($searchString) // Parse standard terms foreach (explode(' ', trim($searchString)) as $searchTerm) { - if ($searchTerm !== '') $terms['search'][] = $searchTerm; + if ($searchTerm !== '') { + $terms['search'][] = $searchTerm; + } } // Split filter values out @@ -267,15 +277,18 @@ protected function getRegexEscapedOperators() * @param string $tagTerm * @return mixed */ - protected function applyTagSearch(\Illuminate\Database\Eloquent\Builder $query, $tagTerm) { + protected function applyTagSearch(\Illuminate\Database\Eloquent\Builder $query, $tagTerm) + { preg_match("/^(.*?)((".$this->getRegexEscapedOperators().")(.*?))?$/", $tagTerm, $tagSplit); - $query->whereHas('tags', function(\Illuminate\Database\Eloquent\Builder $query) use ($tagSplit) { + $query->whereHas('tags', function (\Illuminate\Database\Eloquent\Builder $query) use ($tagSplit) { $tagName = $tagSplit[1]; $tagOperator = count($tagSplit) > 2 ? $tagSplit[3] : ''; $tagValue = count($tagSplit) > 3 ? $tagSplit[4] : ''; $validOperator = in_array($tagOperator, $this->queryOperators); if (!empty($tagOperator) && !empty($tagValue) && $validOperator) { - if (!empty($tagName)) $query->where('name', '=', $tagName); + if (!empty($tagName)) { + $query->where('name', '=', $tagName); + } if (is_numeric($tagValue) && $tagOperator !== 'like') { // We have to do a raw sql query for this since otherwise PDO will quote the value and MySQL will // search the value as a string which prevents being able to do number-based operations @@ -323,7 +336,8 @@ public function indexEntity(Entity $entity) * Index multiple Entities at once * @param Entity[] $entities */ - protected function indexEntities($entities) { + protected function indexEntities($entities) + { $terms = []; foreach ($entities as $entity) { $nameTerms = $this->generateTermArrayFromText($entity->name, 5); @@ -386,7 +400,9 @@ protected function generateTermArrayFromText($text, $scoreAdjustment = 1) $token = strtok($text, $splitChars); while ($token !== false) { - if (!isset($tokenMap[$token])) $tokenMap[$token] = 0; + if (!isset($tokenMap[$token])) { + $tokenMap[$token] = 0; + } $tokenMap[$token]++; $token = strtok($splitChars); } @@ -410,43 +426,63 @@ protected function generateTermArrayFromText($text, $scoreAdjustment = 1) protected function filterUpdatedAfter(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) { - try { $date = date_create($input); - } catch (\Exception $e) {return;} + try { + $date = date_create($input); + } catch (\Exception $e) { + return; + } $query->where('updated_at', '>=', $date); } protected function filterUpdatedBefore(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) { - try { $date = date_create($input); - } catch (\Exception $e) {return;} + try { + $date = date_create($input); + } catch (\Exception $e) { + return; + } $query->where('updated_at', '<', $date); } protected function filterCreatedAfter(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) { - try { $date = date_create($input); - } catch (\Exception $e) {return;} + try { + $date = date_create($input); + } catch (\Exception $e) { + return; + } $query->where('created_at', '>=', $date); } protected function filterCreatedBefore(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) { - try { $date = date_create($input); - } catch (\Exception $e) {return;} + try { + $date = date_create($input); + } catch (\Exception $e) { + return; + } $query->where('created_at', '<', $date); } protected function filterCreatedBy(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) { - if (!is_numeric($input) && $input !== 'me') return; - if ($input === 'me') $input = user()->id; + if (!is_numeric($input) && $input !== 'me') { + return; + } + if ($input === 'me') { + $input = user()->id; + } $query->where('created_by', '=', $input); } protected function filterUpdatedBy(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) { - if (!is_numeric($input) && $input !== 'me') return; - if ($input === 'me') $input = user()->id; + if (!is_numeric($input) && $input !== 'me') { + return; + } + if ($input === 'me') { + $input = user()->id; + } $query->where('updated_by', '=', $input); } @@ -455,7 +491,10 @@ protected function filterInName(\Illuminate\Database\Eloquent\Builder $query, En $query->where('name', 'like', '%' .$input. '%'); } - protected function filterInTitle(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) {$this->filterInName($query, $model, $input);} + protected function filterInTitle(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) + { + $this->filterInName($query, $model, $input); + } protected function filterInBody(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) { @@ -469,14 +508,14 @@ protected function filterIsRestricted(\Illuminate\Database\Eloquent\Builder $que protected function filterViewedByMe(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) { - $query->whereHas('views', function($query) { + $query->whereHas('views', function ($query) { $query->where('user_id', '=', user()->id); }); } protected function filterNotViewedByMe(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) { - $query->whereDoesntHave('views', function($query) { + $query->whereDoesntHave('views', function ($query) { $query->where('user_id', '=', user()->id); }); } @@ -484,7 +523,9 @@ protected function filterNotViewedByMe(\Illuminate\Database\Eloquent\Builder $qu protected function filterSortBy(\Illuminate\Database\Eloquent\Builder $query, Entity $model, $input) { $functionName = camel_case('sort_by_' . $input); - if (method_exists($this, $functionName)) $this->$functionName($query, $model); + if (method_exists($this, $functionName)) { + $this->$functionName($query, $model); + } } @@ -500,4 +541,4 @@ protected function sortByLastCommented(\Illuminate\Database\Eloquent\Builder $qu $query->join($commentQuery, $model->getTable() . '.id', '=', 'comments.entity_id')->orderBy('last_commented', 'desc'); } -} \ No newline at end of file +} diff --git a/app/Services/SettingService.php b/app/Services/SettingService.php index ce87f5a..7ec3ef9 100644 --- a/app/Services/SettingService.php +++ b/app/Services/SettingService.php @@ -40,8 +40,12 @@ public function __construct(Setting $setting, Cache $cache) */ public function get($key, $default = false) { - if ($default === false) $default = config('setting-defaults.' . $key, false); - if (isset($this->localCache[$key])) return $this->localCache[$key]; + if ($default === false) { + $default = config('setting-defaults.' . $key, false); + } + if (isset($this->localCache[$key])) { + return $this->localCache[$key]; + } $value = $this->getValueFromStore($key, $default); $formatted = $this->formatValue($value, $default); @@ -72,12 +76,16 @@ protected function getValueFromStore($key, $default) { // Check for an overriding value $overrideValue = $this->getOverrideValue($key); - if ($overrideValue !== null) return $overrideValue; + if ($overrideValue !== null) { + return $overrideValue; + } // Check the cache $cacheKey = $this->cachePrefix . $key; $cacheVal = $this->cache->get($cacheKey, null); - if ($cacheVal !== null) return $cacheVal; + if ($cacheVal !== null) { + return $cacheVal; + } // Check the database $settingObject = $this->getSettingObjectByKey($key); @@ -112,11 +120,17 @@ protected function clearFromCache($key) protected function formatValue($value, $default) { // Change string booleans to actual booleans - if ($value === 'true') $value = true; - if ($value === 'false') $value = false; + if ($value === 'true') { + $value = true; + } + if ($value === 'false') { + $value = false; + } // Set to default if empty - if ($value === '') $value = $default; + if ($value === '') { + $value = $default; + } return $value; } @@ -225,8 +239,9 @@ protected function getSettingObjectByKey($key) */ protected function getOverrideValue($key) { - if ($key === 'registration-enabled' && config('auth.method') === 'ldap') return false; + if ($key === 'registration-enabled' && config('auth.method') === 'ldap') { + return false; + } return null; } - -} \ No newline at end of file +} diff --git a/app/Services/SocialAuthService.php b/app/Services/SocialAuthService.php index d524645..30f7eed 100644 --- a/app/Services/SocialAuthService.php +++ b/app/Services/SocialAuthService.php @@ -150,8 +150,12 @@ private function validateDriver($socialDriver) { $driver = trim(strtolower($socialDriver)); - if (!in_array($driver, $this->validSocialDrivers)) abort(404, trans('errors.social_driver_not_found')); - if (!$this->checkDriverConfigured($driver)) throw new SocialDriverNotConfigured(trans('errors.social_driver_not_configured', ['socialAccount' => title_case($socialDriver)])); + if (!in_array($driver, $this->validSocialDrivers)) { + abort(404, trans('errors.social_driver_not_found')); + } + if (!$this->checkDriverConfigured($driver)) { + throw new SocialDriverNotConfigured(trans('errors.social_driver_not_configured', ['socialAccount' => title_case($socialDriver)])); + } return $driver; } @@ -220,5 +224,4 @@ public function detachSocialAccount($socialDriver) session()->flash('success', trans('settings.users_social_disconnected', ['socialAccount' => title_case($socialDriver)])); return redirect(user()->getEditUrl()); } - -} \ No newline at end of file +} diff --git a/app/Services/UploadService.php b/app/Services/UploadService.php index 028e78b..cd05675 100644 --- a/app/Services/UploadService.php +++ b/app/Services/UploadService.php @@ -32,7 +32,9 @@ public function __construct(FileSystem $fileSystem) */ protected function getStorage() { - if ($this->storageInstance !== null) return $this->storageInstance; + if ($this->storageInstance !== null) { + return $this->storageInstance; + } $storageType = config('filesystems.default'); $this->storageInstance = $this->fileSystem->disk($storageType); @@ -60,4 +62,4 @@ protected function isLocal() { return strtolower(config('filesystems.default')) === 'local'; } -} \ No newline at end of file +} diff --git a/app/Services/ViewService.php b/app/Services/ViewService.php index 770a9e3..ddcf2eb 100644 --- a/app/Services/ViewService.php +++ b/app/Services/ViewService.php @@ -27,7 +27,9 @@ public function __construct(View $view, PermissionService $permissionService) public function add(Entity $entity) { $user = user(); - if ($user === null || $user->isDefault()) return 0; + if ($user === null || $user->isDefault()) { + return 0; + } $view = $entity->views()->where('user_id', '=', $user->id)->first(); // Add view if model exists if ($view) { @@ -77,12 +79,16 @@ public function getPopular($count = 10, $page = 0, $filterModel = false) public function getUserRecentlyViewed($count = 10, $page = 0, $filterModel = false) { $user = user(); - if ($user === null || $user->isDefault()) return collect(); + if ($user === null || $user->isDefault()) { + return collect(); + } $query = $this->permissionService ->filterRestrictedEntityRelations($this->view, 'views', 'viewable_id', 'viewable_type'); - if ($filterModel) $query = $query->where('viewable_type', '=', get_class($filterModel)); + if ($filterModel) { + $query = $query->where('viewable_type', '=', get_class($filterModel)); + } $query = $query->where('user_id', '=', $user->id); $viewables = $query->with('viewable')->orderBy('updated_at', 'desc') @@ -97,5 +103,4 @@ public function resetAll() { $this->view->truncate(); } - -} \ No newline at end of file +} diff --git a/app/SocialAccount.php b/app/SocialAccount.php index e7c9b4c..fdba6a0 100644 --- a/app/SocialAccount.php +++ b/app/SocialAccount.php @@ -1,6 +1,5 @@ morphTo('entity'); } -} \ No newline at end of file +} diff --git a/app/User.php b/app/User.php index fd6879b..d1e9b38 100644 --- a/app/User.php +++ b/app/User.php @@ -60,7 +60,9 @@ public function isDefault() */ public function roles() { - if ($this->id === 0) return ; + if ($this->id === 0) { + return ; + } return $this->belongsToMany(Role::class); } @@ -91,9 +93,11 @@ public function hasSystemRole($role) */ public function permissions($cache = true) { - if(isset($this->permissions) && $cache) return $this->permissions; + if (isset($this->permissions) && $cache) { + return $this->permissions; + } $this->load('roles.permissions'); - $permissions = $this->roles->map(function($role) { + $permissions = $this->roles->map(function ($role) { return $role->permissions; })->flatten()->unique(); $this->permissions = $permissions; @@ -107,7 +111,9 @@ public function permissions($cache = true) */ public function can($permissionName) { - if ($this->email === 'guest') return false; + if ($this->email === 'guest') { + return false; + } return $this->permissions()->pluck('name')->contains($permissionName); } @@ -162,7 +168,9 @@ public function getAvatar($size = 50) { $default = baseUrl('/user_avatar.png'); $imageId = $this->image_id; - if ($imageId === 0 || $imageId === '0' || $imageId === null) return $default; + if ($imageId === 0 || $imageId === '0' || $imageId === null) { + return $default; + } try { $avatar = $this->avatar ? baseUrl($this->avatar->getThumb($size, $size, false)) : $default; @@ -206,10 +214,14 @@ public function getProfileUrl() */ public function getShortName($chars = 8) { - if (strlen($this->name) <= $chars) return $this->name; + if (strlen($this->name) <= $chars) { + return $this->name; + } $splitName = explode(' ', $this->name); - if (strlen($splitName[0]) <= $chars) return $splitName[0]; + if (strlen($splitName[0]) <= $chars) { + return $splitName[0]; + } return ''; } diff --git a/app/helpers.php b/app/helpers.php index 153f1e4..daa747e 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -74,7 +74,9 @@ function userCan($permission, Ownable $ownable = null) function setting($key = null, $default = false) { $settingService = resolve(\BookStack\Services\SettingService::class); - if (is_null($key)) return $settingService; + if (is_null($key)) { + return $settingService; + } return $settingService->get($key, $default); } @@ -87,7 +89,9 @@ function setting($key = null, $default = false) function baseUrl($path, $forceAppDomain = false) { $isFullUrl = strpos($path, 'http') === 0; - if ($isFullUrl && !$forceAppDomain) return $path; + if ($isFullUrl && !$forceAppDomain) { + return $path; + } $path = trim($path, '/'); // Remove non-specified domain if forced and we have a domain @@ -126,7 +130,8 @@ function redirect($to = null, $status = 302, $headers = [], $secure = null) return app('redirect')->to($to, $status, $headers, $secure); } -function icon($name, $attrs = []) { +function icon($name, $attrs = []) +{ $iconPath = resource_path('assets/icons/' . $name . '.svg'); $attrString = ' '; foreach ($attrs as $attrName => $attr) { @@ -159,11 +164,15 @@ function sortUrl($path, $data, $overrideData = []) foreach ($queryData as $name => $value) { $trimmedVal = trim($value); - if ($trimmedVal === '') continue; + if ($trimmedVal === '') { + continue; + } $queryStringSections[] = urlencode($name) . '=' . urlencode($trimmedVal); } - if (count($queryStringSections) === 0) return $path; + if (count($queryStringSections) === 0) { + return $path; + } return baseUrl($path . '?' . implode('&', $queryStringSections)); -} \ No newline at end of file +} diff --git a/composer.json b/composer.json index 5b9802f..2750b7c 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,8 @@ "symfony/dom-crawler": "3.1.*", "laravel/browser-kit-testing": "^2.0", "barryvdh/laravel-ide-helper": "^2.4.1", - "barryvdh/laravel-debugbar": "^3.1.0" + "barryvdh/laravel-debugbar": "^3.1.0", + "squizlabs/php_codesniffer": "^3.2" }, "autoload": { "classmap": [ diff --git a/composer.lock b/composer.lock index 057e600..9db080b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "7d60f09393b99551e9ffdb6622ed7ade", + "content-hash": "8ad5cb7acc1115a77404d1be899984ac", "packages": [ { "name": "aws/aws-sdk-php", @@ -5027,6 +5027,57 @@ "homepage": "https://github.com/sebastianbergmann/version", "time": "2016-10-03T07:35:21+00:00" }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.2.2", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "d7c00c3000ac0ce79c96fcbfef86b49a71158cd1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/d7c00c3000ac0ce79c96fcbfef86b49a71158cd1", + "reference": "d7c00c3000ac0ce79c96fcbfef86b49a71158cd1", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2017-12-19T21:44:46+00:00" + }, { "name": "symfony/class-loader", "version": "v3.3.6", diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 0000000..009791f --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,8 @@ + + + The coding standard for BookStack. + app + */migrations/* + + + \ No newline at end of file diff --git a/readme.md b/readme.md index 77f1e88..97438d4 100644 --- a/readme.md +++ b/readme.md @@ -72,7 +72,11 @@ Some strings have colon-prefixed variables in such as `:userName`. Leave these v Feel free to create issues to request new features or to report bugs and problems. Just please follow the template given when creating the issue. -### Pull Request +### Standards + +PHP code within BookStack is generally to [PSR-2](http://www.php-fig.org/psr/psr-2/) standards. From the BookStack root folder you can run `./vendor/bin/phpcs` to check code is formatted correctly and `./vendor/bin/phpcbf` to auto-fix non-PSR-2 code. + +### Pull Requests Pull requests are very welcome. If the scope of your pull request is large it may be best to open the pull request early or create an issue for it to discuss how it will fit in to the project and plan out the merge. @@ -111,3 +115,4 @@ These are the great open-source projects used to help build BookStack: * [Snappy (WKHTML2PDF)](https://github.com/barryvdh/laravel-snappy) * [Laravel IDE helper](https://github.com/barryvdh/laravel-ide-helper) * [WKHTMLtoPDF](http://wkhtmltopdf.org/index.html) +* [Draw.io](https://github.com/jgraph/drawio)