diff --git a/app/Models/Episode.php b/app/Models/Episode.php index eef658e..7029eb3 100644 --- a/app/Models/Episode.php +++ b/app/Models/Episode.php @@ -8,7 +8,6 @@ use App\Models\PopularWeekly; use App\Models\PopularDaily; use Conner\Tagging\Taggable; -use Laravelista\Comments\Commentable; use Laravel\Scout\Searchable; use Maize\Markable\Markable; use Maize\Markable\Models\Like; @@ -26,7 +25,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany; class Episode extends Model implements Sitemapable { - use Commentable, Markable, Taggable; + use Markable, Taggable; use HasFactory; use Searchable; diff --git a/app/Models/Hentai.php b/app/Models/Hentai.php index f17bd6f..c07852a 100644 --- a/app/Models/Hentai.php +++ b/app/Models/Hentai.php @@ -10,11 +10,10 @@ use Illuminate\Support\Carbon; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Conner\Tagging\Taggable; -use Laravelista\Comments\Commentable; class Hentai extends Model implements Sitemapable { - use Commentable, Taggable; + use Taggable; use HasFactory; /** diff --git a/app/Models/User.php b/app/Models/User.php index e2c7754..fc627a6 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -9,13 +9,11 @@ use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Support\Facades\Storage; -use Laravelista\Comments\Commenter; - use Illuminate\Support\Facades\DB; class User extends Authenticatable { - use HasFactory, Notifiable, Commenter; + use HasFactory, Notifiable; /** * The attributes that are mass assignable. diff --git a/app/Override/Comments/CommentPolicy.php b/app/Override/Comments/CommentPolicy.php deleted file mode 100644 index 5d473d0..0000000 --- a/app/Override/Comments/CommentPolicy.php +++ /dev/null @@ -1,56 +0,0 @@ -getKey() == $comment->commenter_id) || $user->is_admin; - } - - /** - * Can user update the comment - * - * @param $user - * @param Comment $comment - * @return bool - */ - public function update($user, Comment $comment) : bool - { - return $user->getKey() == $comment->commenter_id; - } - - /** - * Can user reply to the comment - * - * @param $user - * @param Comment $comment - * @return bool - */ - public function reply($user, Comment $comment) : bool - { - return $user->getKey() != $comment->commenter_id; - } -} - diff --git a/app/Override/Comments/CommentService.php b/app/Override/Comments/CommentService.php deleted file mode 100644 index b72f260..0000000 --- a/app/Override/Comments/CommentService.php +++ /dev/null @@ -1,138 +0,0 @@ - 'required|string|max:255', - 'guest_email' => 'required|string|email|max:255', - ]; - } - - // Merge guest rules, if any, with normal validation rules. - Validator::make($request->all(), array_merge($guest_rules ?? [], [ - 'commentable_type' => 'required|string', - 'commentable_id' => 'required|string|min:1', - 'message' => 'required|string' - ]))->validate(); - - $model = $request->commentable_type::findOrFail($request->commentable_id); - - $commentClass = Config::get('comments.model'); - $comment = new $commentClass; - - if (!Auth::check()) { - $comment->guest_name = $request->guest_name; - $comment->guest_email = $request->guest_email; - } else { - $comment->commenter()->associate(Auth::user()); - } - - $comment->commentable()->associate($model); - $comment->comment = $request->message; - $comment->approved = !Config::get('comments.approval_required'); - $comment->save(); - - return $comment; - } - - /** - * Handles updating the message of the comment. - * @return mixed the configured comment-model - */ - public function update(Request $request, Comment $comment) - { - Gate::authorize('edit-comment', $comment); - - Validator::make($request->all(), [ - 'message' => 'required|string' - ])->validate(); - - $comment->update([ - 'comment' => $request->message - ]); - - return $comment; - } - - /** - * Handles deleting a comment. - * @return mixed the configured comment-model - */ - public function destroy(Comment $comment): void - { - Gate::authorize('delete-comment', $comment); - - if (Config::get('comments.soft_deletes') == true) { - $comment->delete(); - } else { - $comment->delete(); - } - } - - /** - * Handles creating a reply "comment" to a comment. - * @return mixed the configured comment-model - */ - public function reply(Request $request, Comment $comment) - { - Gate::authorize('reply-to-comment', $comment); - - Validator::make($request->all(), [ - 'message' => 'required|string' - ])->validate(); - - $commentClass = Config::get('comments.model'); - $reply = new $commentClass; - $reply->commenter()->associate(Auth::user()); - $reply->commentable()->associate($comment->commentable); - $reply->parent()->associate($comment); - $reply->comment = $request->message; - $reply->approved = !Config::get('comments.approval_required'); - $reply->save(); - - // Notify - if ($comment->commentable_type == 'App\Models\Episode') { - $episode = Episode::where('id', $comment->commentable_id)->firstOrFail(); - $url = '/hentai/' . $episode->slug . '#comment-' . $reply->id; - - $user = Auth::user(); - - $parentCommentUser = User::where('id', $comment->commenter_id)->firstOrFail(); - $parentCommentUser->notify( - new CommentNotification( - "{$user->name} replied to your comment.", - Str::limit($reply->comment, 50), - $url - ) - ); - } - - return $reply; - } -} diff --git a/composer.json b/composer.json index d0233f2..d59ce9d 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,6 @@ "laravel/scout": "^10.20", "laravel/socialite": "^5.24", "laravel/tinker": "^2.10", - "laravelista/comments": "dev-l11-compatibility", "livewire/livewire": "^3.6.4", "maize-tech/laravel-markable": "^2.3.0", "meilisearch/meilisearch-php": "^1.16", @@ -50,19 +49,13 @@ } ], "autoload": { - "exclude-from-classmap": [ - "vendor/laravelista/comments/src/CommentPolicy.php", - "vendor/laravelista/comments/src/CommentService.php" - ], + "exclude-from-classmap": [], "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" }, - "files": [ - "app/Override/Comments/CommentPolicy.php", - "app/Override/Comments/CommentService.php" - ] + "files": [] }, "autoload-dev": { "psr-4": { diff --git a/composer.lock b/composer.lock index cedb267..68a4f97 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "749225dc4ea2aca06f1639bef889cc59", + "content-hash": "cf750c98603544d91cf1bdb428866a8f", "packages": [ { "name": "brick/math", @@ -581,56 +581,6 @@ ], "time": "2025-03-06T22:45:56+00:00" }, - { - "name": "erusev/parsedown", - "version": "1.7.4", - "source": { - "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35" - }, - "type": "library", - "autoload": { - "psr-0": { - "Parsedown": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" - } - ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", - "keywords": [ - "markdown", - "parser" - ], - "support": { - "issues": "https://github.com/erusev/parsedown/issues", - "source": "https://github.com/erusev/parsedown/tree/1.7.x" - }, - "time": "2019-12-30T22:54:17+00:00" - }, { "name": "firebase/php-jwt", "version": "v7.0.2", @@ -2266,70 +2216,6 @@ }, "time": "2025-01-27T14:24:01+00:00" }, - { - "name": "laravelista/comments", - "version": "dev-l11-compatibility", - "source": { - "type": "git", - "url": "https://github.com/renatokira/comments.git", - "reference": "490764a774d520a4d9e43395b472d0f9bf802ef6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/renatokira/comments/zipball/490764a774d520a4d9e43395b472d0f9bf802ef6", - "reference": "490764a774d520a4d9e43395b472d0f9bf802ef6", - "shasum": "" - }, - "require": { - "erusev/parsedown": "^1.7", - "illuminate/database": "^9.0|^10.0|^11.0", - "illuminate/http": "^9.0|^10.0|^11.0", - "illuminate/pagination": "^9.0|^10.0|^11.0", - "illuminate/queue": "^9.0|^10.0|^11.0", - "illuminate/routing": "^9.0|^10.0|^11.0", - "illuminate/support": "^9.0|^10.0|^11.0", - "php": "^8.0", - "spatie/laravel-honeypot": "^4.5" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Laravelista\\Comments\\ServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravelista\\Comments\\": "src/" - } - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mario Bašić", - "email": "mario@laravelista.hr", - "homepage": "https://laravelista.hr" - } - ], - "description": "Comments for Laravel.", - "keywords": [ - "comments", - "laravel" - ], - "support": { - "source": "https://github.com/renatokira/comments/tree/l11-compatibility" - }, - "funding": [ - { - "type": "patreon", - "url": "https://www.patreon.com/laravelista" - } - ], - "time": "2024-03-16T14:14:11+00:00" - }, { "name": "league/commonmark", "version": "2.7.1", @@ -5817,82 +5703,6 @@ ], "time": "2025-05-20T08:42:52+00:00" }, - { - "name": "spatie/laravel-honeypot", - "version": "4.6.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-honeypot.git", - "reference": "38d164f14939e943b92771859fc206c74cba8397" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-honeypot/zipball/38d164f14939e943b92771859fc206c74cba8397", - "reference": "38d164f14939e943b92771859fc206c74cba8397", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0|^12.0", - "illuminate/encryption": "^8.0|^9.0|^10.0|^11.0|^12.0", - "illuminate/http": "^8.0|^9.0|^10.0|^11.0|^12.0", - "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0", - "illuminate/validation": "^8.0|^9.0|^10.0|^11.0|^12.0", - "nesbot/carbon": "^2.0|^3.0", - "php": "^8.0", - "spatie/laravel-package-tools": "^1.9", - "symfony/http-foundation": "^5.1.2|^6.0|^7.0" - }, - "require-dev": { - "livewire/livewire": "^2.10|^3.0", - "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0|^10.0", - "pestphp/pest-plugin-livewire": "^1.0|^2.1|^3.0", - "phpunit/phpunit": "^9.6|^10.5|^11.5", - "spatie/pest-plugin-snapshots": "^1.1|^2.1", - "spatie/phpunit-snapshot-assertions": "^4.2|^5.1", - "spatie/test-time": "^1.2.1" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\Honeypot\\HoneypotServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Spatie\\Honeypot\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Preventing spam submitted through forms", - "homepage": "https://github.com/spatie/laravel-honeypot", - "keywords": [ - "laravel-honeypot", - "spatie" - ], - "support": { - "source": "https://github.com/spatie/laravel-honeypot/tree/4.6.1" - }, - "funding": [ - { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" - } - ], - "time": "2025-05-05T13:50:37+00:00" - }, { "name": "spatie/laravel-package-tools", "version": "1.92.7", @@ -11900,9 +11710,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "laravelista/comments": 20 - }, + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { diff --git a/resources/views/profile/comments.blade.php b/resources/views/profile/comments.blade.php index 3f65c5a..22e59fe 100644 --- a/resources/views/profile/comments.blade.php +++ b/resources/views/profile/comments.blade.php @@ -65,7 +65,7 @@
- @comments(['model' => $episode]) + {{--@comments(['model' => $episode])--}}
@endforeach diff --git a/resources/views/series/partials/comments.blade.php b/resources/views/series/partials/comments.blade.php index 811fbd6..1f0589c 100644 --- a/resources/views/series/partials/comments.blade.php +++ b/resources/views/series/partials/comments.blade.php @@ -3,6 +3,6 @@

{{ __('home.latest-comments') }}

- @comments(['model' => $hentai]) + {{--@comments(['model' => $hentai])--}} diff --git a/resources/views/stream/partials/comments.blade.php b/resources/views/stream/partials/comments.blade.php index 1f46bae..6427f85 100644 --- a/resources/views/stream/partials/comments.blade.php +++ b/resources/views/stream/partials/comments.blade.php @@ -3,6 +3,6 @@

{{ __('home.latest-comments') }}

- @comments(['model' => $episode]) + {{--@comments(['model' => $episode])--}} diff --git a/resources/views/vendor/comments/_comment.blade.php b/resources/views/vendor/comments/_comment.blade.php deleted file mode 100644 index ac77b9f..0000000 --- a/resources/views/vendor/comments/_comment.blade.php +++ /dev/null @@ -1,87 +0,0 @@ -@inject('markdown', 'Parsedown') -@php - // TODO: There should be a better place for this. - $markdown->setSafeMode(true); -@endphp - - -
- -
- {{ $comment->commenter->name }} Avatar -
- -
-
- @if($comment->commenter->is_patreon) -
{{ $comment->commenter->name }} - {{ $comment->created_at->diffForHumans() }}
- @else -
{{ $comment->commenter->name }} - {{ $comment->created_at->diffForHumans() }}
- @endif -
-
{!! $markdown->line($comment->comment) !!}
- - @if (! Illuminate\Support\Facades\Route::is('profile.comments')) -
- @can('reply-to-comment', $comment) - - @endcan - @can('edit-comment', $comment) - - @endcan - @can('delete-comment', $comment) - @lang('comments::comments.delete') - - @endcan -
- @endif - - - @can('edit-comment', $comment) - @include('modals.comment-edit') - @endcan - - @can('reply-to-comment', $comment) - @include('modals.comment-reply') - @endcan - -
{{-- Margin bottom --}} - - - - {{-- Recursion for children --}} - @if($grouped_comments->has($comment->getKey()) && $indentationLevel <= $maxIndentationLevel) - {{-- TODO: Don't repeat code. Extract to a new file and include it. --}} - @foreach($grouped_comments[$comment->getKey()] as $child) -
-
- @include('comments::_comment', [ - 'comment' => $child, - 'grouped_comments' => $grouped_comments - ]) -
- @endforeach - @endif - -
-
- -{{-- Recursion for children --}} -@if($grouped_comments->has($comment->getKey()) && $indentationLevel > $maxIndentationLevel) - {{-- TODO: Don't repeat code. Extract to a new file and include it. --}} - @foreach($grouped_comments[$comment->getKey()] as $child) - @include('comments::_comment', [ - 'comment' => $child, - 'grouped_comments' => $grouped_comments - ]) - @endforeach -@endif diff --git a/resources/views/vendor/comments/_form.blade.php b/resources/views/vendor/comments/_form.blade.php deleted file mode 100644 index ecb7536..0000000 --- a/resources/views/vendor/comments/_form.blade.php +++ /dev/null @@ -1,30 +0,0 @@ - -
- @if($errors->has('commentable_type')) - - @endif - @if($errors->has('commentable_id')) - - @endif -
- @csrf - @honeypot - - - -
- - -
- - - @lang('comments::comments.submit') - -
-
- -
diff --git a/resources/views/vendor/comments/components/comments.blade.php b/resources/views/vendor/comments/components/comments.blade.php deleted file mode 100644 index d02a0e0..0000000 --- a/resources/views/vendor/comments/components/comments.blade.php +++ /dev/null @@ -1,80 +0,0 @@ -@php - if (isset($approved) and $approved == true) { - $comments = $model->approvedComments; - } else { - $comments = $model->comments; - } -@endphp - -@if($comments->count() < 1) -
@lang('comments::comments.there_are_no_comments')
-@endif - -
- @php - $comments = $comments->sortByDesc('created_at'); - - if (isset($perPage)) { - $page = request()->query('page', 1) - 1; - - $parentComments = $comments->where('child_id', ''); - - $slicedParentComments = $parentComments->slice($page * $perPage, $perPage); - - $m = Config::get('comments.model'); // This has to be done like this, otherwise it will complain. - $modelKeyName = (new $m)->getKeyName(); // This defaults to 'id' if not changed. - - $slicedParentCommentsIds = $slicedParentComments->pluck($modelKeyName)->toArray(); - - // Remove parent Comments from comments. - $comments = $comments->where('child_id', '!=', ''); - - $grouped_comments = new \Illuminate\Pagination\LengthAwarePaginator( - $slicedParentComments->merge($comments)->groupBy('child_id'), - $parentComments->count(), - $perPage - ); - - $grouped_comments->withPath(request()->url()); - } else { - $grouped_comments = $comments->groupBy('child_id'); - } - @endphp - @foreach($grouped_comments as $comment_id => $comments) - {{-- Process parent nodes --}} - @if($comment_id == '') - @foreach($comments as $comment) - @include('comments::_comment', [ - 'comment' => $comment, - 'grouped_comments' => $grouped_comments, - 'maxIndentationLevel' => $maxIndentationLevel ?? 3 - ]) - @endforeach - @endif - @endforeach -
- -@isset ($perPage) - {{ $grouped_comments->links() }} -@endisset - -@if ((! Illuminate\Support\Facades\Route::is('profile.comments')) && (! Illuminate\Support\Facades\Route::is('home.index'))) - @auth - @include('comments::_form') - @elseif(Config::get('comments.guest_commenting') == true) - @include('comments::_form', [ - 'guest_commenting' => true - ]) - @else -
-
-
@lang('comments::comments.authentication_required')
-

@lang('comments::comments.you_must_login_to_post_a_comment')

-
- - Login - -
-
- @endauth -@endif