From 62342433f41f2eaef19c5e85f5ce960297ee8206 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 28 Jan 2018 16:58:52 +0000 Subject: [PATCH] Set /app PHP code to PSR-2 standard Also adde draw.io to attribution list. Closes #649 --- app/Activity.php | 8 +- app/Attachment.php | 6 +- app/Book.php | 5 +- app/Chapter.php | 2 - app/Console/Commands/DeleteUsers.php | 17 +-- app/Entity.php | 20 +++- app/EntityPermission.php | 1 - app/Exceptions/AuthException.php | 4 +- app/Exceptions/ConfirmationEmailException.php | 4 +- app/Exceptions/FileUploadException.php | 4 +- app/Exceptions/Handler.php | 10 +- app/Exceptions/ImageUploadException.php | 5 +- app/Exceptions/LdapException.php | 5 +- app/Exceptions/NotFoundException.php | 6 +- app/Exceptions/NotifyException.php | 3 +- app/Exceptions/PermissionsException.php | 6 +- app/Exceptions/PrettyException.php | 5 +- app/Exceptions/SocialDriverNotConfigured.php | 4 +- app/Exceptions/SocialSignInException.php | 4 +- app/Exceptions/UserRegistrationException.php | 4 +- .../Auth/ForgotPasswordController.php | 3 +- app/Http/Controllers/Auth/LoginController.php | 7 +- .../Controllers/Auth/RegisterController.php | 14 ++- .../Auth/ResetPasswordController.php | 2 +- app/Http/Controllers/BookController.php | 10 +- app/Http/Controllers/ChapterController.php | 6 +- app/Http/Controllers/Controller.php | 13 ++- app/Http/Controllers/HomeController.php | 4 +- app/Http/Controllers/ImageController.php | 14 +-- app/Http/Controllers/PageController.php | 9 +- app/Http/Controllers/PermissionController.php | 4 +- app/Http/Controllers/SearchController.php | 3 - app/Http/Controllers/SettingController.php | 5 +- app/Http/Controllers/TagController.php | 1 - app/Http/Controllers/UserController.php | 5 +- app/Http/Middleware/Localization.php | 4 +- app/Model.php | 3 +- app/Notifications/ConfirmEmail.php | 1 - app/Ownable.php | 4 +- app/Page.php | 5 +- app/PageRevision.php | 6 +- app/Providers/AppServiceProvider.php | 6 +- app/Providers/AuthServiceProvider.php | 2 +- app/Providers/CustomFacadeProvider.php | 8 +- app/Providers/LdapUserProvider.php | 9 +- app/Providers/PaginationServiceProvider.php | 3 +- app/Repos/CommentRepo.php | 11 +- app/Repos/EntityRepo.php | 107 +++++++++++------- app/Repos/ImageRepo.php | 13 +-- app/Repos/PermissionsRepo.php | 4 +- app/Repos/TagRepo.php | 15 ++- app/Repos/UserRepo.php | 19 ++-- app/Role.php | 6 +- app/RolePermission.php | 3 +- app/SearchTerm.php | 1 - app/Services/ActivityService.php | 3 +- app/Services/AttachmentService.php | 7 +- app/Services/EmailConfirmationService.php | 4 +- app/Services/ExportService.php | 25 ++-- app/Services/Facades/Activity.php | 8 +- app/Services/Facades/Images.php | 8 +- app/Services/Facades/Setting.php | 8 +- app/Services/Facades/Views.php | 7 +- app/Services/ImageService.php | 18 ++- app/Services/Ldap.php | 2 - app/Services/LdapService.php | 28 +++-- app/Services/PermissionService.php | 68 +++++++---- app/Services/SearchService.php | 101 ++++++++++++----- app/Services/SettingService.php | 35 ++++-- app/Services/SocialAuthService.php | 11 +- app/Services/UploadService.php | 6 +- app/Services/ViewService.php | 15 ++- app/SocialAccount.php | 1 - app/Tag.php | 2 +- app/User.php | 26 +++-- app/helpers.php | 21 +++- composer.json | 3 +- composer.lock | 53 ++++++++- phpcs.xml | 8 ++ readme.md | 7 +- 80 files changed, 593 insertions(+), 335 deletions(-) create mode 100644 phpcs.xml diff --git a/app/Activity.php b/app/Activity.php index af386700a..c01da1f6c 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 @@ class Activity extends Model * @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 fe291bec2..55344cd7d 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 @@ class Attachment extends Ownable { return baseUrl('/attachments/' . $this->id); } - } diff --git a/app/Book.php b/app/Book.php index 3fb87b4c5..457a4c928 100644 --- a/app/Book.php +++ b/app/Book.php @@ -27,7 +27,9 @@ class Book extends Entity 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 @@ class Book extends Entity { 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 b08cb913a..6dab9dc47 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 8829d3992..6dba83e13 100644 --- a/app/Console/Commands/DeleteUsers.php +++ b/app/Console/Commands/DeleteUsers.php @@ -6,7 +6,8 @@ use BookStack\User; 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 @@ class DeleteUsers extends Command{ { $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 @@ class DeleteUsers extends Command{ ++$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 df8e4d38b..1ea4e8dac 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 @@ class Entity extends Ownable */ 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 @@ class Entity extends Ownable * 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 eaf0a8951..0f49e07f5 100644 --- a/app/EntityPermission.php +++ b/app/EntityPermission.php @@ -1,6 +1,5 @@ getPrevious()); return false; } @@ -107,7 +110,8 @@ class Handler extends ExceptionHandler * @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 6f4c73037..c64dddaa2 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 ae4c676d6..e2a8c53b4 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 3617652c2..106b90524 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -70,7 +70,9 @@ class LoginController extends Controller 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 @@ class LoginController extends Controller } 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 @@ class LoginController extends Controller 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 5a7a5e971..d3c1efb68 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -113,7 +113,8 @@ class RegisterController extends Controller if ($validator->fails()) { $this->throwValidationException( - $request, $validator + $request, + $validator ); } @@ -272,8 +273,12 @@ class RegisterController extends Controller } $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 @@ class RegisterController extends Controller ]; 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 eb678503d..56f1cf026 100644 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -46,4 +46,4 @@ class ResetPasswordController extends Controller 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 f1645bb4b..7a98bd49e 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -109,7 +109,7 @@ class BookController extends Controller { $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 @@ class BookController extends Controller $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 @@ class BookController extends Controller $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 @@ class BookController extends Controller }); // 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 ceeb2a3ef..a4e0b6409 100644 --- a/app/Http/Controllers/ChapterController.php +++ b/app/Http/Controllers/ChapterController.php @@ -159,7 +159,8 @@ class ChapterController extends Controller * @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 @@ class ChapterController extends Controller * @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 733d5416b..a51ff5d77 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -51,7 +51,9 @@ abstract class Controller extends BaseController */ protected function preventAccessForDemoUsers() { - if (config('app.env') === 'demo') $this->showPermissionError(); + if (config('app.env') === 'demo') { + $this->showPermissionError(); + } } /** @@ -100,7 +102,9 @@ abstract class Controller extends BaseController */ 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 @@ abstract class Controller extends BaseController 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 @@ abstract class Controller extends BaseController ->withInput($request->input()) ->withErrors($errors, $this->errorBag()); } - } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 164becd4d..b2620588f 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -56,7 +56,8 @@ class HomeController extends Controller * @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 @@ class HomeController extends Controller { return view('partials/custom-head-content'); } - } diff --git a/app/Http/Controllers/ImageController.php b/app/Http/Controllers/ImageController.php index e675bff0c..a61f447eb 100644 --- a/app/Http/Controllers/ImageController.php +++ b/app/Http/Controllers/ImageController.php @@ -63,14 +63,14 @@ class ImageController extends Controller * @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 @@ class ImageController extends Controller * @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 @@ class ImageController extends Controller $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 9dc7d6401..17bce7eba 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -153,7 +153,9 @@ class PageController extends Controller $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 @@ class PageController extends Controller $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 @@ class PageController extends Controller 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 cd064e7e8..c4c7fe972 100644 --- a/app/Http/Controllers/PermissionController.php +++ b/app/Http/Controllers/PermissionController.php @@ -67,7 +67,9 @@ class PermissionController extends Controller { $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 0faeb0dec..0827eeb71 100644 --- a/app/Http/Controllers/SearchController.php +++ b/app/Http/Controllers/SearchController.php @@ -104,7 +104,4 @@ class SearchController extends Controller return view('search/entity-ajax-list', ['entities' => $entities]); } - } - - diff --git a/app/Http/Controllers/SettingController.php b/app/Http/Controllers/SettingController.php index 70a12631a..e0e351458 100644 --- a/app/Http/Controllers/SettingController.php +++ b/app/Http/Controllers/SettingController.php @@ -33,7 +33,9 @@ class SettingController extends Controller // 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 @@ class SettingController extends Controller 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 5cf7a0f8f..815d9e8d5 100644 --- a/app/Http/Controllers/TagController.php +++ b/app/Http/Controllers/TagController.php @@ -54,5 +54,4 @@ class TagController extends Controller $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 2fe22f1e1..7aa7b31d2 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -102,7 +102,6 @@ class UserController extends Controller } catch (Exception $e) { \Log::error('Failed to save user gravatar image'); } - } return redirect('/settings/users'); @@ -256,7 +255,8 @@ class UserController extends Controller * @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 @@ class UserController extends Controller return redirect()->back(302, [], "/settings/users/$id"); } - } diff --git a/app/Http/Middleware/Localization.php b/app/Http/Middleware/Localization.php index 14c87c377..466c1442b 100644 --- a/app/Http/Middleware/Localization.php +++ b/app/Http/Middleware/Localization.php @@ -19,7 +19,9 @@ class Localization $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 9ec2b7362..498bacb20 100644 --- a/app/Model.php +++ b/app/Model.php @@ -15,5 +15,4 @@ class Model extends EloquentModel { return parent::getAttributeFromArray($key); } - -} \ No newline at end of file +} diff --git a/app/Notifications/ConfirmEmail.php b/app/Notifications/ConfirmEmail.php index 27ac89c32..858b12166 100644 --- a/app/Notifications/ConfirmEmail.php +++ b/app/Notifications/ConfirmEmail.php @@ -49,5 +49,4 @@ class ConfirmEmail extends Notification implements ShouldQueue ->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 f2cfe801b..fe58e05ed 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 0a9764729..ffcc4f9d2 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 @@ class PageRevision extends Model { return $type === 'revision'; } - } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index ef3ee6c48..b06b2f3a2 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 @@ class AppServiceProvider extends ServiceProvider */ 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 509b86182..d1fac56e6 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -25,7 +25,7 @@ class AuthServiceProvider extends ServiceProvider */ 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 b2c7acf5e..a97512e8c 100644 --- a/app/Providers/CustomFacadeProvider.php +++ b/app/Providers/CustomFacadeProvider.php @@ -34,28 +34,28 @@ class CustomFacadeProvider extends ServiceProvider */ 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 a15257aec..1dc789c3b 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 @@ class LdapUserProvider implements UserProvider { // 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 @@ class LdapUserProvider implements UserProvider ->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 ec41267a4..3a695c5e3 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 @@ class CommentRepo { 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 2c92e1907..64f7a0810 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 @@ class EntityRepo $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 @@ class EntityRepo 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 @@ class EntityRepo { $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 @@ class EntityRepo { $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 @@ class EntityRepo $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 @@ class EntityRepo 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 @@ class EntityRepo $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 @@ class EntityRepo 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 @@ class EntityRepo */ 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 @@ class EntityRepo 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 @@ class EntityRepo $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 @@ class EntityRepo $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 @@ class EntityRepo */ 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 @@ class EntityRepo // 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 @@ class EntityRepo $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 @@ class EntityRepo 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 @@ class EntityRepo } $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 @@ class EntityRepo $page->delete(); } - } - - - - - - - - - - - - diff --git a/app/Repos/ImageRepo.php b/app/Repos/ImageRepo.php index 0c15a4310..ec2fda1d3 100644 --- a/app/Repos/ImageRepo.php +++ b/app/Repos/ImageRepo.php @@ -92,7 +92,7 @@ class ImageRepo * @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 @@ class ImageRepo /** * 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 @@ class ImageRepo $images = $images->whereIn('uploaded_to', $validPageIds); } - return $this->returnPaginated($images, $pagination, $pageSize); + return $this->returnPaginated($images, $pageNum, $pageSize); } /** @@ -254,5 +254,4 @@ class ImageRepo $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 aa58d1718..6f7ea1dc8 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 5edd6df3c..ab1805ab3 100644 --- a/app/Repos/TagRepo.php +++ b/app/Repos/TagRepo.php @@ -52,7 +52,9 @@ class TagRepo 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 @@ class TagRepo $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 @@ class TagRepo $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 @@ class TagRepo $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 e21568d63..d329c307c 100644 --- a/app/Repos/UserRepo.php +++ b/app/Repos/UserRepo.php @@ -60,13 +60,13 @@ class UserRepo * @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 @@ class UserRepo 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 @@ class UserRepo */ 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 @@ class UserRepo { 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 bf9685ee2..e86854e79 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 @@ class Role extends Model { return static::where('hidden', '=', false)->orderBy('name')->get(); } - } diff --git a/app/RolePermission.php b/app/RolePermission.php index ded6f6394..366c16749 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 50df34021..ee6c72190 100644 --- a/app/SearchTerm.php +++ b/app/SearchTerm.php @@ -14,5 +14,4 @@ class SearchTerm extends Model { return $this->morphTo('entity'); } - } diff --git a/app/Services/ActivityService.php b/app/Services/ActivityService.php index 2368ba10a..3fc7e7ee0 100644 --- a/app/Services/ActivityService.php +++ b/app/Services/ActivityService.php @@ -170,5 +170,4 @@ class ActivityService Session::flash('success', $message); } } - -} \ No newline at end of file +} diff --git a/app/Services/AttachmentService.php b/app/Services/AttachmentService.php index 9403b86ed..381e44749 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 @@ class AttachmentService extends UploadService return $attachmentPath; } - -} \ No newline at end of file +} diff --git a/app/Services/EmailConfirmationService.php b/app/Services/EmailConfirmationService.php index 8eb52708c..9ee69ef1a 100644 --- a/app/Services/EmailConfirmationService.php +++ b/app/Services/EmailConfirmationService.php @@ -108,6 +108,4 @@ class EmailConfirmationService } return $token; } - - -} \ No newline at end of file +} diff --git a/app/Services/ExportService.php b/app/Services/ExportService.php index 1e4e99428..ada2261e4 100644 --- a/app/Services/ExportService.php +++ b/app/Services/ExportService.php @@ -42,7 +42,7 @@ class ExportService 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 @@ class ExportService 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 @@ class ExportService $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 @@ class ExportService $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 @@ class ExportService } return $text; } - } - - - - - - - - - - - - diff --git a/app/Services/Facades/Activity.php b/app/Services/Facades/Activity.php index ea04cfc47..d24e39dba 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 @@ class ImageService extends UploadService $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 @@ class ImageService extends UploadService // 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 @@ class ImageService extends UploadService $basePath = ($this->storageUrl == false) ? baseUrl('/') : $this->storageUrl; return rtrim($basePath, '/') . $filePath; } - - } diff --git a/app/Services/Ldap.php b/app/Services/Ldap.php index 9c3bec327..29270daf5 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 @@ class LdapService 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 @@ class LdapService $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 @@ class LdapService */ 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 @@ class LdapService // 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 @@ class LdapService } return strtr($filterString, $newAttrs); } - -} \ No newline at end of file +} diff --git a/app/Services/PermissionService.php b/app/Services/PermissionService.php index 4f8b4e0f9..331ed06c8 100644 --- a/app/Services/PermissionService.php +++ b/app/Services/PermissionService.php @@ -88,7 +88,9 @@ class PermissionService } $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 @@ class PermissionService } $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 @@ class PermissionService */ protected function getRoles() { - if ($this->userRoles !== false) return $this->userRoles; + if ($this->userRoles !== false) { + return $this->userRoles; + } $roles = []; @@ -161,9 +167,9 @@ class PermissionService */ 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 @@ class PermissionService * @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 @@ class PermissionService } } - if ($deleteOld) $this->deleteManyJointPermissionsForEntities($entities->all()); + if ($deleteOld) { + $this->deleteManyJointPermissionsForEntities($entities->all()); + } $this->createManyJointPermissions($entities, $roles); } @@ -261,7 +270,7 @@ class PermissionService */ 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 @@ class PermissionService */ 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 @@ class PermissionService $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 @@ class PermissionService } } - $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 @@ class PermissionService 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 @@ class PermissionService } } - return $this->createJointPermissionDataArray($entity, $role, $action, + return $this->createJointPermissionDataArray( + $entity, + $role, + $action, ($hasExplicitAccessToParents || ($roleHasPermission && $hasPermissiveAccessToParents)), ($hasExplicitAccessToParents || ($roleHasPermissionOwn && $hasPermissiveAccessToParents)) ); @@ -426,7 +443,8 @@ class PermissionService * @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 @@ class PermissionService * @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 @@ class PermissionService $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 @@ class PermissionService $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 a8784ded1..6786c5cf4 100644 --- a/app/Services/SearchService.php +++ b/app/Services/SearchService.php @@ -83,7 +83,9 @@ class SearchService $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 @@ class SearchService $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 @@ class SearchService 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 @@ class SearchService 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 @@ class SearchService // 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 @@ class SearchService // 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 @@ class SearchService // 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 @@ class SearchService * @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 @@ class SearchService * 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 @@ class SearchService $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 @@ class SearchService 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 @@ class SearchService $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 @@ class SearchService 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 @@ class SearchService 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 @@ class SearchService $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 ce87f5a4b..7ec3ef93a 100644 --- a/app/Services/SettingService.php +++ b/app/Services/SettingService.php @@ -40,8 +40,12 @@ class SettingService */ 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 @@ class SettingService { // 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 @@ class SettingService 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 @@ class SettingService */ 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 d52464539..30f7eed0e 100644 --- a/app/Services/SocialAuthService.php +++ b/app/Services/SocialAuthService.php @@ -150,8 +150,12 @@ class SocialAuthService { $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 @@ class SocialAuthService 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 028e78bea..cd0567559 100644 --- a/app/Services/UploadService.php +++ b/app/Services/UploadService.php @@ -32,7 +32,9 @@ class UploadService */ 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 @@ class UploadService { 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 770a9e39f..ddcf2eb7e 100644 --- a/app/Services/ViewService.php +++ b/app/Services/ViewService.php @@ -27,7 +27,9 @@ class ViewService 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 @@ class ViewService 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 @@ class ViewService { $this->view->truncate(); } - -} \ No newline at end of file +} diff --git a/app/SocialAccount.php b/app/SocialAccount.php index e7c9b4cc5..fdba6a04f 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 fd6879ba0..d1e9b38a7 100644 --- a/app/User.php +++ b/app/User.php @@ -60,7 +60,9 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon */ public function roles() { - if ($this->id === 0) return ; + if ($this->id === 0) { + return ; + } return $this->belongsToMany(Role::class); } @@ -91,9 +93,11 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon */ 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 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon */ 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 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon { $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 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon */ 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 153f1e49f..daa747e71 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 5b9802f52..2750b7cb3 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 057e6007a..9db080bab 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 000000000..009791fc9 --- /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 77f1e8805..97438d4bf 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)