## 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]
-
+