diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 394a4eeb..07ef4dae 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -10,23 +10,23 @@ final class Kernel extends HttpKernel { protected $middleware = [ // \App\Http\Middleware\TrustHosts::class, - \App\Http\Middleware\TrustProxies::class, - \App\Http\Middleware\HttpsProtocol::class, + Middleware\TrustProxies::class, + Middleware\HttpsProtocol::class, \Illuminate\Http\Middleware\HandleCors::class, - \App\Http\Middleware\PreventRequestsDuringMaintenance::class, + Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, - \App\Http\Middleware\TrimStrings::class, + Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, ]; protected $middlewareGroups = [ 'web' => [ - \App\Http\Middleware\EncryptCookies::class, + Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, + Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], @@ -38,11 +38,11 @@ final class Kernel extends HttpKernel ]; protected $routeMiddleware = [ - 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth' => Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, - 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'guest' => Middleware\RedirectIfAuthenticated::class, 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, diff --git a/app/Http/Livewire/Modals/DeclinedArticle.php b/app/Http/Livewire/Modals/DeclinedArticle.php new file mode 100644 index 00000000..2c6dbf72 --- /dev/null +++ b/app/Http/Livewire/Modals/DeclinedArticle.php @@ -0,0 +1,62 @@ + 'required|string|min:6', + 'description' => 'required|string', + ]; + + public function mount(int $id): void + { + $this->article = Article::find($id); + } + + public static function modalMaxWidth(): string + { + return 'xl'; + } + + public function declined(): void + { + $data = $this->validate(); + + $this->authorize(ArticlePolicy::DISAPPROVE, $this->article); + + $this->article->update(['declined_at' => now()]); // @phpstan-ignore-line + + Cache::forget('post-'.$this->article->id); // @phpstan-ignore-line + + $this->article->user->notify(new SendDeclinedArticle($this->article, $data)); // @phpstan-ignore-line + + session()->flash('status', __('L\'article a été décliné et le mail a été envoyé à l\'auteur pour le notifier.')); + + $this->redirectRoute('articles'); + } + + + public function render(): View + { + return view('livewire.modals.declined-article'); + } +} diff --git a/app/Models/Thread.php b/app/Models/Thread.php index 23b5291d..ec019ea6 100644 --- a/app/Models/Thread.php +++ b/app/Models/Thread.php @@ -191,7 +191,7 @@ public function scopeUnresolved(Builder $query): Builder * Scope for filtering threads. * * @param Builder $builder - * @param \Illuminate\Http\Request $request + * @param Request $request * @param string[] $filters * @return Builder */ diff --git a/app/Models/User.php b/app/Models/User.php index 52ac0fcd..a9342149 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -353,7 +353,7 @@ public function scopeHasActivity(Builder $query): Builder /** * Route notifications for the Slack channel. * - * @param \Illuminate\Notifications\Notification $notification + * @param Notification $notification * @return string */ public function routeNotificationForSlack(Notification $notification): string diff --git a/app/Notifications/SendApprovedArticle.php b/app/Notifications/SendApprovedArticle.php index d460e3d9..96dd8de7 100644 --- a/app/Notifications/SendApprovedArticle.php +++ b/app/Notifications/SendApprovedArticle.php @@ -6,11 +6,10 @@ use App\Models\Article; use Illuminate\Bus\Queueable; -use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Notification; -final class SendApprovedArticle extends Notification implements ShouldQueue +final class SendApprovedArticle extends Notification { use Queueable; diff --git a/app/Notifications/SendDeclinedArticle.php b/app/Notifications/SendDeclinedArticle.php new file mode 100644 index 00000000..044fa949 --- /dev/null +++ b/app/Notifications/SendDeclinedArticle.php @@ -0,0 +1,35 @@ +subject(__('Article Décliné ❌.')) + ->greeting(__('Article Décliné : '.$this->data['raison'])) + ->line(__('Nous avons le regret de vous informer que votre article a été décliné.')) + ->line($this->data['description']) + ->action(__('Voir mon article'), route('articles.show', $this->article)) + ->line(__('Merci d\'avoir utilisé Laravel Cameroun.!')); + } +} diff --git a/app/helpers.php b/app/helpers.php index 3e885f3b..8d84d948 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -91,12 +91,12 @@ function getFilter(string $key, array $filters = [], string $default = 'recent') /** * Returns the route for the replyAble. * - * @param \App\Models\Thread|\App\Models\Discussion $replyAble + * @param App\Models\Thread|App\Models\Discussion $replyAble * @return string */ function route_to_reply_able(mixed $replyAble): string { - return $replyAble instanceof \App\Models\Thread ? + return $replyAble instanceof App\Models\Thread ? route('forum.show', $replyAble->slug()) : route('discussions.show', $replyAble->slug()); } diff --git a/config/gamify.php b/config/gamify.php index 20c42df5..012306b6 100644 --- a/config/gamify.php +++ b/config/gamify.php @@ -4,7 +4,7 @@ return [ // Model which will be having points, generally it will be User - 'payee_model' => \App\Models\User::class, + 'payee_model' => App\Models\User::class, // Reputation model 'reputation_model' => '\QCod\Gamify\Reputation', diff --git a/config/livewire-ui-spotlight.php b/config/livewire-ui-spotlight.php index afb0289f..4ede002c 100644 --- a/config/livewire-ui-spotlight.php +++ b/config/livewire-ui-spotlight.php @@ -31,17 +31,17 @@ */ 'commands' => [ - \App\Spotlight\Article::class, - \App\Spotlight\Articles::class, - \App\Spotlight\Discussion::class, - \App\Spotlight\Discussions::class, - \App\Spotlight\FAQs::class, - \App\Spotlight\Forum::class, - \App\Spotlight\Guides::class, - \App\Spotlight\Slack::class, - \App\Spotlight\Sujet::class, - \App\Spotlight\Telegram::class, - \App\Spotlight\User::class, + App\Spotlight\Article::class, + App\Spotlight\Articles::class, + App\Spotlight\Discussion::class, + App\Spotlight\Discussions::class, + App\Spotlight\FAQs::class, + App\Spotlight\Forum::class, + App\Spotlight\Guides::class, + App\Spotlight\Slack::class, + App\Spotlight\Sujet::class, + App\Spotlight\Telegram::class, + App\Spotlight\User::class, ], /* diff --git a/config/permission.php b/config/permission.php index 2570dbaa..0ed2706b 100644 --- a/config/permission.php +++ b/config/permission.php @@ -137,7 +137,7 @@ * When permissions or roles are updated the cache is flushed automatically. */ - 'expiration_time' => \DateInterval::createFromDateString('24 hours'), + 'expiration_time' => DateInterval::createFromDateString('24 hours'), /* * The cache key used to store all permissions. diff --git a/database/migrations/2021_09_14_172248_create_permission_tables.php b/database/migrations/2021_09_14_172248_create_permission_tables.php index 47f05484..ff110e84 100644 --- a/database/migrations/2021_09_14_172248_create_permission_tables.php +++ b/database/migrations/2021_09_14_172248_create_permission_tables.php @@ -16,10 +16,10 @@ public function up(): void $teams = config('permission.teams'); if (empty($tableNames)) { - throw new \Exception('Error: config/permission.php not loaded. Run [php artisan config:clear] and try again.'); + throw new Exception('Error: config/permission.php not loaded. Run [php artisan config:clear] and try again.'); } if ($teams && empty($columnNames['team_foreign_key'] ?? null)) { - throw new \Exception('Error: team_foreign_key on config/permission.php not loaded. Run [php artisan config:clear] and try again.'); + throw new Exception('Error: team_foreign_key on config/permission.php not loaded. Run [php artisan config:clear] and try again.'); } Schema::create($tableNames['permissions'], function (Blueprint $table): void { @@ -128,7 +128,7 @@ public function down(): void $tableNames = config('permission.table_names'); if (empty($tableNames)) { - throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.'); + throw new Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.'); } Schema::drop($tableNames['role_has_permissions']); diff --git a/database/migrations/2021_11_04_094343_create_views_table.php b/database/migrations/2021_11_04_094343_create_views_table.php index 5b9b9a88..f468a7bf 100644 --- a/database/migrations/2021_11_04_094343_create_views_table.php +++ b/database/migrations/2021_11_04_094343_create_views_table.php @@ -11,7 +11,7 @@ final class CreateViewsTable extends Migration /** * The database schema. * - * @var \Illuminate\Support\Facades\Schema + * @var Schema */ protected $schema; diff --git a/helpers/ModelHelper.php b/helpers/ModelHelper.php index dfa15fdc..f2b524ef 100644 --- a/helpers/ModelHelper.php +++ b/helpers/ModelHelper.php @@ -24,7 +24,7 @@ * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property-read \Illuminate\Database\Eloquent\Model|\Eloquent $subject - * @property-read \App\Models\User $user + * @property-read User $user * @method static \Database\Factories\ActivityFactory factory($count = null, $state = []) * @method static \Illuminate\Database\Eloquent\Builder|Activity newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Activity newQuery() @@ -74,7 +74,7 @@ final class IdeHelperActivity * @property-read int|null $reactions_count * @property-read \Illuminate\Database\Eloquent\Collection $tags * @property-read int|null $tags_count - * @property-read \App\Models\User $user + * @property-read User $user * @property-read \Illuminate\Database\Eloquent\Collection $views * @property-read int|null $views_count * @method static \Illuminate\Database\Eloquent\Builder|Article approved() @@ -176,7 +176,7 @@ final class IdeHelperChannel * @property-read \Illuminate\Database\Eloquent\Collection $activity * @property-read int|null $activity_count * @property-read int $count_all_replies_with_child - * @property-read \App\Models\Reply|null $latestReply + * @property-read Reply|null $latestReply * @property-read \Illuminate\Database\Eloquent\Collection $reactions * @property-read int|null $reactions_count * @property-read \Illuminate\Database\Eloquent\Collection $replies @@ -185,7 +185,7 @@ final class IdeHelperChannel * @property-read int|null $subscribes_count * @property-read \Illuminate\Database\Eloquent\Collection $tags * @property-read int|null $tags_count - * @property-read \App\Models\User $user + * @property-read User $user * @property-read \Illuminate\Database\Eloquent\Collection $views * @property-read int|null $views_count * @method static \Illuminate\Database\Eloquent\Builder|Discussion active() @@ -241,7 +241,7 @@ final class IdeHelperDiscussion * @property \Illuminate\Support\Carbon|null $updated_at * @property-read \Spatie\MediaLibrary\MediaCollections\Models\Collections\MediaCollection $media * @property-read int|null $media_count - * @property-read \App\Models\User $owner + * @property-read User $owner * @method static \Illuminate\Database\Eloquent\Builder|Enterprise certified() * @method static \Database\Factories\EnterpriseFactory factory($count = null, $state = []) * @method static \Illuminate\Database\Eloquent\Builder|Enterprise featured() @@ -491,8 +491,8 @@ final class IdeHelperSubscription * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property \Illuminate\Support\Carbon|null $deleted_at - * @property-read \App\Models\Premium\Feature $feature - * @property-read \App\Models\Premium\Subscription $subscription + * @property-read Feature $feature + * @property-read Subscription $subscription * @method static \Illuminate\Database\Eloquent\Builder|PlanSubscriptionUsage byFeatureSlug(string $featureSlug) * @method static \Illuminate\Database\Eloquent\Builder|SubscriptionUsage newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|SubscriptionUsage newQuery() @@ -559,8 +559,8 @@ final class IdeHelperReaction * @property-read \Illuminate\Database\Eloquent\Collection $replies * @property-read int|null $replies_count * @property-read \Illuminate\Database\Eloquent\Model|\Eloquent $replyAble - * @property-read \App\Models\Thread|null $solutionTo - * @property-read \App\Models\User $user + * @property-read Thread|null $solutionTo + * @property-read User $user * @method static \Database\Factories\ReplyFactory factory($count = null, $state = []) * @method static \Illuminate\Database\Eloquent\Builder|Reply isSolution() * @method static \Illuminate\Database\Eloquent\Builder|Reply newModelQuery() @@ -621,7 +621,7 @@ final class IdeHelperSocialAccount * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property-read \Illuminate\Database\Eloquent\Model|\Eloquent $subscribeAble - * @property-read \App\Models\User $user + * @property-read User $user * @method static \Illuminate\Database\Eloquent\Builder|Subscribe newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Subscribe newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Subscribe query() @@ -684,18 +684,18 @@ final class IdeHelperTag * @property-read int|null $activity_count * @property-read \Illuminate\Database\Eloquent\Collection $channels * @property-read int|null $channels_count - * @property-read \App\Models\Reply|null $latestReply + * @property-read Reply|null $latestReply * @property-read \Illuminate\Notifications\DatabaseNotificationCollection $notifications * @property-read int|null $notifications_count * @property-read \Illuminate\Database\Eloquent\Collection $reactions * @property-read int|null $reactions_count * @property-read \Illuminate\Database\Eloquent\Collection $replies * @property-read int|null $replies_count - * @property-read \App\Models\User|null $resolvedBy - * @property-read \App\Models\Reply|null $solutionReply + * @property-read User|null $resolvedBy + * @property-read Reply|null $solutionReply * @property-read \Illuminate\Database\Eloquent\Collection $subscribes * @property-read int|null $subscribes_count - * @property-read \App\Models\User $user + * @property-read User $user * @property-read \Illuminate\Database\Eloquent\Collection $views * @property-read int|null $views_count * @method static \Illuminate\Database\Eloquent\Builder|Thread active() @@ -744,7 +744,7 @@ final class IdeHelperThread * @property array|null $metadata * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at - * @property-read \App\Models\User $user + * @property-read User $user * @method static \Illuminate\Database\Eloquent\Builder|Transaction complete() * @method static \Illuminate\Database\Eloquent\Builder|Transaction newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Transaction newQuery() @@ -803,7 +803,7 @@ final class IdeHelperTransaction * @property-read int|null $badges_count * @property-read \Illuminate\Database\Eloquent\Collection $discussions * @property-read int|null $discussions_count - * @property-read \App\Models\Enterprise|null $enterprise + * @property-read Enterprise|null $enterprise * @property-read \Illuminate\Database\Eloquent\Collection $features * @property-read int|null $features_count * @property-read bool $is_sponsor diff --git a/resources/views/articles/show.blade.php b/resources/views/articles/show.blade.php index b6d45894..769bea21 100644 --- a/resources/views/articles/show.blade.php +++ b/resources/views/articles/show.blade.php @@ -11,14 +11,14 @@ @endphp
-