diff --git a/README.md b/README.md index 4df2081a..a5d9ef65 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@

- + Community logo

- Laravel v10.x + Laravel v11.x Build Status - - Coding Standards + + Coding Standards Laravel Forge Site Deployment Status @@ -18,49 +18,63 @@

## Laravel.cm + Ce dépôt contient le code source du site de [Laravel.cm](https://laravel.cm). Laravel Cameroun est la plus grande communauté de développeurs PHP & Laravel résidant au Cameroun. ## Rejoindre la communauté + Vous pouvez rejoindre la communauté ou nous suivre via nos différentes plateformes -[Site Officiel](https://laravel.cm) - [Facebook](https://www.facebook.com/laravelcm) - [Twitter](https://twitter.com/laravelcm) - [Rejoindre Slack](https://laravel.cm/slack) - [Rejoindre Discord](https://laravel.cm/discord) +- [Discord](https://discord.gg/KNp6brbyVD) +- [Telegram](https://t.me/laravelcameroun) +- [Twitter](https://twitter.com/laravelcm) +- [Facebook](https://www.facebook.com/laravelcm) ## Sponsors + Nous tenons à remercier ces **entreprises extraordinaires** pour leur parrainage. Si vous souhaitez devenir sponsor, veuillez visiter la page Laravel.cm de Sponsoring. - **[Laravel Shopper](https://laravelshopper.dev)** - [GDG Douala](https://gdg.community.dev/gdg-douala) -- [NotchPay](https://notchpay.co) -- [Sharuco](https://sharuco.lndev.me) +- [NotchPay](https://notchpay.co?utm_source=laravel.cm) +- [LN UI](https://ui.lndev.me?utm_source=laravel.cm) ## Caractéristiques Serveur -The following tools are required in order to start the installation. -- PHP >=8.0 +Les dépendances suivantes sont nécessaires pour démarrer l'installation. + +- PHP >= 8.2 - [Composer](https://getcomposer.org/download/) - [Yarn](https://yarnpkg.com/getting-started/install) -- [Valet](https://laravel.com/docs/valet#installation) +- [Valet](https://laravel.com/docs/valet#installation) or [Herd](https://herd.laravel.com) ## Installation -> Notez que vous êtes libre d'ajuster l'emplacement `~/Sites/laravel.cm` à n'importe quel répertoire de votre choix sur votre machine. Ce faisant, assurez-vous d'exécuter la commande `valet link` dans le répertoire souhaité. + +> Notez que vous êtes libre d'ajuster l'emplacement `~/Sites/laravel.cm` à n'importe quel répertoire de votre choix sur votre machine. Ce faisant, assurez-vous d'exécuter la commande `valet link` (si vous utilisez Laravel Valet) dans le répertoire souhaité. 1. Clonez ce repo avec la commande `git clone git@github.com:laravelcm/laravel.cm.git ~/Sites/laravel.cm` 2. Exécuter `composer install` pour installer les dépendances PHP -3. Configurez une base de données locale appelée `laravelcm` +3. Configurez une base de données locale (vous pouvez l'appeler `laravelcm`) 4. Exécutez `composer setup` pour configurer l'application 5. Configurer un pilote de messagerie fonctionnel comme [Mailtrap](https://mailtrap.io/) ou [Maildev](https://maildev.github.io/maildev/) 6. Configurez les fonctionnalités (facultatives) ci-dessous -Vous pouvez maintenant visiter l'application dans votre navigateur en visitant [http://laravel.cm.test](http://laravel.cm.test). Si vous avez amorcé la base de données, vous pouvez vous connecter à un compte de test avec ** `johndoe` ** & **` password` **. +Vous pouvez maintenant visiter l'application dans votre navigateur en visitant [http://laravel.cm.test](http://laravel.cm.test). +Si vous avez amorcé la base de données, vous pouvez vous connecter à un compte de test avec ** `johndoe` ** & **` password` **. + +Une fois que vous avez installé et configuré, pour avoir des dummy data, vous devez exécuter la commande : -Une fois que vous avez installé et configuré, pour avoir des dummy data, vous devez exécuter la commande ```shell php artisan db:seed --class=DummyDatabaseSeeder ``` ### GitHub Authentication (optionnel) -Pour que l'authentification Github fonctionne localement, vous devez [enregistrer une nouvelle application OAuth sur Github](https://github.com/settings/applications/new). Utilisez `http://laravel.cm.test` pour l'URL de la page d'accueil et `http://laravel.cm.test/auth/github` pour l'URL de rappel. Lorsque vous avez créé l'application, remplissez l'ID et le secret dans votre fichier `.env` dans les variables d'environnement ci-dessous. Vous devriez maintenant pouvoir vous authentifier avec Github. + +Pour que l'authentification Github fonctionne localement, vous devez [enregistrer une nouvelle application OAuth sur Github](https://github.com/settings/applications/new). +Utilisez `http://laravel.cm.test` pour l'URL de la page d'accueil et `http://laravel.cm.test/auth/github` pour l'URL de rappel. +Lorsque vous avez créé l'application, remplissez l'ID et le secret dans votre fichier `.env` dans les variables d'environnement ci-dessous. +Vous devriez maintenant pouvoir vous authentifier avec Github. ```shell GITHUB_ID= @@ -69,7 +83,10 @@ GITHUB_URL=http://laravel.cm.test/auth/github ``` ### Twitter Sharing (optionnel) -Pour permettre le partage automatique des articles publiés sur Twitter, vous devez [créer une application Twitter](https://developer.twitter.com/apps/). Une fois l'application créée, mettez à jour les variables ci-dessous dans votre fichier `.env`. La clé et le secret du consommateur ainsi que le jeton et le secret d'accès se trouvent dans la section «Clés et jetons» de l'interface utilisateur des développeurs Twitter. + +Pour permettre le partage automatique des articles publiés sur Twitter, vous devez [créer une application Twitter](https://developer.twitter.com/apps/). +Une fois l'application créée, mettez à jour les variables ci-dessous dans votre fichier `.env`. +La clé et le secret du consommateur ainsi que le jeton et le secret d'accès se trouvent dans la section « Clés et jetons » de l'interface utilisateur des développeurs Twitter. ```shell TWITTER_CONSUMER_KEY= @@ -78,10 +95,13 @@ TWITTER_ACCESS_TOKEN= TWITTER_ACCESS_SECRET= ``` -Les articles approuvés sont partagés dans l'ordre dans lequel ils ont été soumis pour approbation. Les articles sont partagés deux fois par jour à 14h00 et 18h00 UTC. Une fois qu'un article a été partagé, il ne sera plus partagé. +Les articles approuvés sont partagés dans l'ordre dans lequel ils ont été soumis pour approbation. Les articles sont partagés deux fois par jour à 14h00 et 18h00 UTC. +Une fois qu'un article a été partagé, il ne sera plus partagé. ### Notifications Telegram (optionnel) -Laravel Cameroun peut notifier les administrateurs des nouveaux articles soumis via Telegram. Pour que cela fonctionne, vous devez configurer un [bot Telegram](https://core.telegram.org/bots) et obtenir un token. Ensuite, configurez le canal sur lequel vous souhaitez envoyer les messages relatifs aux nouveaux articles. + +Laravel Cameroun peut notifier les administrateurs des nouveaux articles soumis via Telegram. Pour que cela fonctionne, vous devez configurer un [bot Telegram](https://core.telegram.org/bots) et obtenir un token. +Ensuite, configurez le canal sur lequel vous souhaitez envoyer les messages relatifs aux nouveaux articles. ```shell TELEGRAM_BOT_TOKEN= @@ -91,9 +111,11 @@ TELEGRAM_CHANNEL= ## Commands | Command | Description | |------------------------------------|--------------------------------------------------------| -| **`composer test`** | Exécuter les tests | +| **`composer lint`** | Appliquer le formatage de code avec `laravel/pint` | +| **`composer test:phpstan`** | Appliquer l'analyse statique avec phpstan | +| **`composer test:pest`** | Exécuter les tests | | `php artisan migrate:fresh --seed` | Reset la base de données | -| `yarn && yarn watch` | Surveillez les changements dans les fichiers CSS et JS | +| `yarn && yarn dev` | Surveillez les changements dans les fichiers CSS et JS | ## Maintainers diff --git a/app/Http/Controllers/NotchPayCallBackController.php b/app/Http/Controllers/NotchPayCallBackController.php index 0e552047..4a185338 100644 --- a/app/Http/Controllers/NotchPayCallBackController.php +++ b/app/Http/Controllers/NotchPayCallBackController.php @@ -11,7 +11,6 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Log; -use NotchPay\Exceptions\ApiException; use NotchPay\NotchPay; use NotchPay\Payment; @@ -39,7 +38,7 @@ public function __invoke(Request $request): RedirectResponse value: __('Votre paiement a été annulé veuillez relancer pour soutenir Laravel Cameroun, Merci.') ); } else { - // @ToDO Envoie de mail de notification de remerciement pour le sponsoring si l'utilisateur est dans la base de données + // @ToDO: Envoie de mail de notification de remerciement pour le sponsoring si l'utilisateur est dans la base de données event(new SponsoringPaymentInitialize($transaction)); Cache::forget(key: 'sponsors'); @@ -50,8 +49,9 @@ public function __invoke(Request $request): RedirectResponse ); } - } catch (ApiException $e) { + } catch (\Exception $e) { Log::error($e->getMessage()); + session()->flash( key: 'error', value: __('Une erreur s\'est produite lors de votre paiement. Veuillez relancer Merci.') diff --git a/database/seeders/Fixtures/ArticleTableSeeder.php b/database/seeders/Fixtures/ArticleTableSeeder.php index 4104ee35..c8f5c8d9 100644 --- a/database/seeders/Fixtures/ArticleTableSeeder.php +++ b/database/seeders/Fixtures/ArticleTableSeeder.php @@ -7,7 +7,6 @@ use App\Models\Article; use App\Models\Tag; use App\Models\User; -use Faker\Generator as Faker; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; @@ -22,10 +21,9 @@ public function run(): void ->whereJsonContains('concerns', ['post']) ->get() ->modelKeys(); - $faker = new Faker; /** @var Article $article1 */ - $article1 = Article::create([ + $article1 = Article::query()->create([ 'title' => $name = 'Voyager - The Missing Laravel Admin', 'slug' => $name, 'body' => " @@ -132,7 +130,7 @@ public function run(): void ->toMediaCollection('media'); /** @var Article $article2 */ - $article2 = Article::create([ + $article2 = Article::query()->create([ 'title' => $name = 'Awesome of awesome', 'slug' => $name, 'body' => " @@ -399,7 +397,7 @@ public function run(): void ->toMediaCollection('media'); /** @var Article $article3 */ - $article3 = Article::create([ + $article3 = Article::query()->create([ 'title' => $name = 'React Email Editor', 'slug' => $name, 'body' => " @@ -522,7 +520,7 @@ public function run(): void ->toMediaCollection('media'); /** @var Article $article4 */ - $article4 = Article::create([ + $article4 = Article::query()->create([ 'title' => $name = 'Awesome Laravel Package, Tutorials, News', 'slug' => $name, 'body' => " @@ -1106,7 +1104,7 @@ public function run(): void ->toMediaCollection('media'); /** @var Article $article5 */ - $article5 = Article::create([ + $article5 = Article::query()->create([ 'title' => $name = 'COVID TEST CENTER', 'slug' => $name, 'body' => " @@ -1180,7 +1178,7 @@ public function run(): void ->toMediaCollection('media'); /** @var Article $article6 */ - $article6 = Article::create([ + $article6 = Article::query()->create([ 'title' => $name = 'Le nouveau site de Grafikart (Grafikart.New)', 'slug' => $name, 'body' => " diff --git a/database/seeders/Fixtures/ThreadTableSeeder.php b/database/seeders/Fixtures/ThreadTableSeeder.php index 78efc86d..a0886075 100644 --- a/database/seeders/Fixtures/ThreadTableSeeder.php +++ b/database/seeders/Fixtures/ThreadTableSeeder.php @@ -21,14 +21,12 @@ public function run(): void ->get() ->modelKeys(); - Thread::factory(['user_id' => random_int(1, count($usersIds))]) + Thread::factory(['user_id' => array_rand($usersIds)]) ->count(40) + ->has( + Reply::factory(['user_id' => array_rand($usersIds)])->count(5), + 'replies' + ) ->create(); - - /*$threadsIds = Thread::query()->inRandomOrder() - ->get() - ->modelKeys(); - - Reply::factory(['user_id' => random_int(1, count($threadsIds))])->create();*/ } } diff --git a/resources/views/ads/ln.blade.php b/resources/views/ads/ln.blade.php index 71d0bfef..09c16960 100644 --- a/resources/views/ads/ln.blade.php +++ b/resources/views/ads/ln.blade.php @@ -25,7 +25,7 @@ class="absolute left-1/2 top-0 ml-[-19rem] w-[69.5625rem] fill-white blur-[26px] - +