├── public
├── favicon.ico
├── robots.txt
├── mix-manifest.json
├── fonts
│ └── vendor
│ │ └── font-awesome
│ │ ├── fontawesome-webfont.eot
│ │ ├── fontawesome-webfont.ttf
│ │ ├── fontawesome-webfont.woff
│ │ └── fontawesome-webfont.woff2
├── .htaccess
└── index.php
├── bootstrap
├── cache
│ └── .gitignore
└── app.php
├── storage
├── logs
│ └── .gitignore
├── app
│ ├── public
│ │ └── .gitignore
│ └── .gitignore
├── debugbar
│ └── .gitignore
└── framework
│ ├── testing
│ └── .gitignore
│ ├── views
│ └── .gitignore
│ ├── cache
│ ├── data
│ │ └── .gitignore
│ └── .gitignore
│ ├── sessions
│ └── .gitignore
│ └── .gitignore
├── database
├── .gitignore
├── factories
│ ├── ActivityFactory.php
│ ├── ChannelFactory.php
│ ├── FavoriteFactory.php
│ ├── ReplyFactory.php
│ ├── DatabaseNotificationFactory.php
│ ├── ThreadFactory.php
│ └── UserFactory.php
├── seeds
│ ├── ActivitySeeder.php
│ ├── ChannelSeeder.php
│ ├── FavoriteSeeder.php
│ ├── UserSeeder.php
│ ├── ReplySeeder.php
│ ├── DatabaseSeeder.php
│ └── ThreadSeeder.php
└── migrations
│ ├── 2020_03_31_120000_create_channels_table.php
│ ├── 2014_10_12_100000_create_password_resets_table.php
│ ├── 2019_08_19_000000_create_failed_jobs_table.php
│ ├── 2020_04_05_174520_create_notifications_table.php
│ ├── 2020_04_02_123700_create_activities_table.php
│ ├── 2020_04_01_181057_create_favorites_table.php
│ ├── 2020_04_14_160518_add_foreign_key_to_threads_table.php
│ ├── 2014_10_12_000000_create_users_table.php
│ ├── 2020_03_31_125700_create_replies_table.php
│ ├── 2020_04_05_163901_create_thread_subscriptions_table.php
│ └── 2020_03_31_125699_create_threads_table.php
├── .gitattributes
├── app
├── Exceptions
│ ├── ThrottleException.php
│ └── Handler.php
├── Http
│ ├── Middleware
│ │ ├── EncryptCookies.php
│ │ ├── VerifyCsrfToken.php
│ │ ├── CheckForMaintenanceMode.php
│ │ ├── TrimStrings.php
│ │ ├── TrustProxies.php
│ │ ├── Authenticate.php
│ │ ├── Administrator.php
│ │ └── RedirectIfAuthenticated.php
│ ├── Controllers
│ │ ├── Controller.php
│ │ ├── Api
│ │ │ ├── UserController.php
│ │ │ └── UserAvatarController.php
│ │ ├── HomeController.php
│ │ ├── SearchController.php
│ │ ├── Auth
│ │ │ ├── ForgotPasswordController.php
│ │ │ ├── ResetPasswordController.php
│ │ │ ├── LoginController.php
│ │ │ ├── ConfirmPasswordController.php
│ │ │ ├── VerificationController.php
│ │ │ └── RegisterController.php
│ │ ├── LockThreadController.php
│ │ ├── ChannelController.php
│ │ ├── FavoriteController.php
│ │ ├── ActivityController.php
│ │ ├── UserNotificationController.php
│ │ ├── ProfileController.php
│ │ ├── BestReplyController.php
│ │ ├── SubscriptionController.php
│ │ └── ReplyController.php
│ ├── Requests
│ │ └── CreatePostRequest.php
│ └── Kernel.php
├── Inspections
│ ├── KeyHeldDown.php
│ ├── Spam.php
│ └── InvalidKeywords.php
├── Providers
│ ├── BroadcastServiceProvider.php
│ ├── AppServiceProvider.php
│ ├── AuthServiceProvider.php
│ ├── EventServiceProvider.php
│ └── RouteServiceProvider.php
├── Listeners
│ ├── NotifyThreadSubscribers.php
│ └── NotifyMentionedUsers.php
├── Filters
│ ├── ThreadFilters.php
│ └── Filters.php
├── Rules
│ ├── SpamFree.php
│ └── Recaptcha.php
├── Console
│ └── Kernel.php
├── Events
│ └── ThreadReceivedNewReply.php
├── Visits.php
├── Trending.php
├── RecordsActivity.php
├── Channel.php
├── Favorable.php
├── Favorite.php
├── Notifications
│ ├── YouWereMentioned.php
│ └── ThreadWasUpdated.php
├── Activity.php
├── Policies
│ ├── UserPolicy.php
│ ├── ThreadPolicy.php
│ └── ReplyPolicy.php
└── ThreadSubscription.php
├── .styleci.yml
├── resources
├── sass
│ ├── app.scss
│ └── _variables.scss
├── js
│ ├── authorization.js
│ ├── components
│ │ ├── Search.vue
│ │ ├── ImageUpload.vue
│ │ ├── SubscribeButton.vue
│ │ ├── WYSIWYG.vue
│ │ ├── Flash.vue
│ │ ├── UserNotifications.vue
│ │ ├── Favorite.vue
│ │ ├── AvatarForm.vue
│ │ ├── Paginator.vue
│ │ ├── Replies.vue
│ │ └── NewReply.vue
│ ├── mixins
│ │ └── collection.js
│ ├── bootstrap.js
│ ├── pages
│ │ └── Thread.vue
│ └── app.js
├── views
│ ├── profiles
│ │ ├── activities
│ │ │ ├── created_thread.blade.php
│ │ │ ├── created_reply.blade.php
│ │ │ └── created_favorite.blade.php
│ │ └── show.blade.php
│ ├── components
│ │ └── activity.blade.php
│ ├── home.blade.php
│ ├── auth
│ │ ├── verify.blade.php
│ │ └── passwords
│ │ │ ├── email.blade.php
│ │ │ └── confirm.blade.php
│ ├── threads
│ │ ├── show.blade.php
│ │ ├── _list.blade.php
│ │ ├── _question.blade.php
│ │ ├── index.blade.php
│ │ ├── search.blade.php
│ │ └── create.blade.php
│ └── layouts
│ │ └── app.blade.php
└── lang
│ └── en
│ ├── pagination.php
│ ├── auth.php
│ └── passwords.php
├── .gitignore
├── .editorconfig
├── tests
├── utilities
│ └── functions.php
├── TestCase.php
├── CreatesApplication.php
├── Unit
│ ├── ChannelTest.php
│ ├── SpamTest.php
│ ├── UserTest.php
│ └── ReplyTest.php
└── Feature
│ ├── ProfileTest.php
│ ├── SearchTest.php
│ ├── SubscribeToThreadsTest.php
│ ├── TrendingThreadsTest.php
│ ├── MentionUserTest.php
│ ├── AddAvatarTest.php
│ ├── FavoriteTest.php
│ ├── UpdateThreadTest.php
│ ├── TriggerActivityTest.php
│ ├── BestReplyTest.php
│ ├── NotificationTest.php
│ └── LockThreadTest.php
├── Homestead.yaml
├── webpack.mix.js
├── routes
├── channels.php
├── api.php
├── console.php
└── web.php
├── server.php
├── after.sh
├── config
├── cors.php
├── services.php
├── view.php
├── hashing.php
├── broadcasting.php
├── filesystems.php
└── queue.php
├── .env.example
├── phpunit.xml
├── README.md
├── package.json
├── artisan
├── Vagrantfile
└── composer.json
/public/favicon.ico:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/bootstrap/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/logs/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/database/.gitignore:
--------------------------------------------------------------------------------
1 | *.sqlite
2 | *.sqlite-journal
3 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/storage/app/public/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/debugbar/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/app/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !public/
3 | !.gitignore
4 |
--------------------------------------------------------------------------------
/storage/framework/testing/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/views/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/cache/data/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/sessions/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !data/
3 | !.gitignore
4 |
--------------------------------------------------------------------------------
/public/mix-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "/js/app.js": "/js/app.js",
3 | "/css/app.css": "/css/app.css"
4 | }
5 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.css linguist-vendored
3 | *.scss linguist-vendored
4 | *.js linguist-vendored
5 | CHANGELOG.md export-ignore
6 |
--------------------------------------------------------------------------------
/public/fonts/vendor/font-awesome/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keizah7/forum/HEAD/public/fonts/vendor/font-awesome/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/public/fonts/vendor/font-awesome/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keizah7/forum/HEAD/public/fonts/vendor/font-awesome/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/public/fonts/vendor/font-awesome/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keizah7/forum/HEAD/public/fonts/vendor/font-awesome/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/storage/framework/.gitignore:
--------------------------------------------------------------------------------
1 | config.php
2 | routes.php
3 | schedule-*
4 | compiled.php
5 | services.json
6 | events.scanned.php
7 | routes.scanned.php
8 | down
9 |
--------------------------------------------------------------------------------
/public/fonts/vendor/font-awesome/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/keizah7/forum/HEAD/public/fonts/vendor/font-awesome/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/app/Exceptions/ThrottleException.php:
--------------------------------------------------------------------------------
1 | define(Activity::class, function (Faker $faker) {
9 | return [
10 | //
11 | ];
12 | });
13 |
--------------------------------------------------------------------------------
/database/seeds/ActivitySeeder.php:
--------------------------------------------------------------------------------
1 | create($attributes);
5 | }
6 |
7 |
8 | function make($class, $attributes = [], $times = null) {
9 | return factory($class, $times)->make($attributes);
10 | }
11 |
--------------------------------------------------------------------------------
/database/seeds/UserSeeder.php:
--------------------------------------------------------------------------------
1 | create();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/database/seeds/ReplySeeder.php:
--------------------------------------------------------------------------------
1 | create();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/resources/views/profiles/activities/created_thread.blade.php:
--------------------------------------------------------------------------------
1 |
There is no activity for this user yet.
21 | @endforelse 22 |
23 |
10 | This thread has been locked. No more replies are allowed. 11 |
12 | 13 |18 | Please sign in to participate in this 19 | discussion. 20 |
21 |This is okay.
' 81 | ]); 82 | 83 | $this->assertEquals('This is okay.
', $reply->body); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "laravel/laravel", 3 | "type": "project", 4 | "description": "The Laravel Framework.", 5 | "keywords": [ 6 | "framework", 7 | "laravel" 8 | ], 9 | "license": "MIT", 10 | "require": { 11 | "php": "^7.4", 12 | "ext-json": "*", 13 | "algolia/algoliasearch-client-php": "^2.2", 14 | "fideloper/proxy": "^4.2", 15 | "fruitcake/laravel-cors": "^1.0", 16 | "guzzlehttp/guzzle": "^6.3", 17 | "kitetail/zttp": "^0.6.0", 18 | "laravel/framework": "^7.0", 19 | "laravel/scout": "^8.0", 20 | "laravel/tinker": "^2.0", 21 | "laravel/ui": "^2.0", 22 | "predis/predis": "^1.1", 23 | "stevebauman/purify": "^3.0" 24 | }, 25 | "require-dev": { 26 | "barryvdh/laravel-debugbar": "^3.2", 27 | "barryvdh/laravel-ide-helper": "^2.6", 28 | "facade/ignition": "^2.0", 29 | "fzaninotto/faker": "^1.9.1", 30 | "laravel/homestead": "^10.7", 31 | "mockery/mockery": "^1.3.1", 32 | "nunomaduro/collision": "^4.1", 33 | "phpunit/phpunit": "^8.5" 34 | }, 35 | "config": { 36 | "optimize-autoloader": true, 37 | "preferred-install": "dist", 38 | "sort-packages": true 39 | }, 40 | "extra": { 41 | "laravel": { 42 | "dont-discover": [] 43 | } 44 | }, 45 | "autoload": { 46 | "psr-4": { 47 | "App\\": "app/" 48 | }, 49 | "classmap": [ 50 | "database/seeds", 51 | "database/factories" 52 | ] 53 | }, 54 | "autoload-dev": { 55 | "psr-4": { 56 | "Tests\\": "tests/" 57 | }, 58 | "files": [ 59 | "tests/utilities/functions.php" 60 | ] 61 | }, 62 | "minimum-stability": "dev", 63 | "prefer-stable": true, 64 | "scripts": { 65 | "post-autoload-dump": [ 66 | "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", 67 | "@php artisan package:discover --ansi" 68 | ], 69 | "post-root-package-install": [ 70 | "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" 71 | ], 72 | "post-create-project-cmd": [ 73 | "@php artisan key:generate --ansi" 74 | ], 75 | "post-update-cmd": [ 76 | "Illuminate\\Foundation\\ComposerScripts::postUpdate", 77 | "@php artisan ide-helper:generate", 78 | "@php artisan ide-helper:meta" 79 | ] 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /app/Http/Kernel.php: -------------------------------------------------------------------------------- 1 | [ 32 | \App\Http\Middleware\EncryptCookies::class, 33 | \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 34 | \Illuminate\Session\Middleware\StartSession::class, 35 | // \Illuminate\Session\Middleware\AuthenticateSession::class, 36 | \Illuminate\View\Middleware\ShareErrorsFromSession::class, 37 | \App\Http\Middleware\VerifyCsrfToken::class, 38 | \Illuminate\Routing\Middleware\SubstituteBindings::class, 39 | ], 40 | 41 | 'api' => [ 42 | 'throttle:60,1', 43 | \Illuminate\Routing\Middleware\SubstituteBindings::class, 44 | ], 45 | ]; 46 | 47 | /** 48 | * The application's route middleware. 49 | * 50 | * These middleware may be assigned to groups or used individually. 51 | * 52 | * @var array 53 | */ 54 | protected $routeMiddleware = array( 55 | 'auth' => \App\Http\Middleware\Authenticate::class, 56 | 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 57 | 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 58 | 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 59 | 'can' => \Illuminate\Auth\Middleware\Authorize::class, 60 | 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 61 | 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, 62 | 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 63 | 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 64 | 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 65 | 'admin' => \App\Http\Middleware\Administrator::class 66 | ); 67 | } 68 | -------------------------------------------------------------------------------- /resources/views/threads/search.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |{{ $error }}
53 | @endforeach 54 |