Commit e58d2cc2 authored by Jérémy Lemesle's avatar Jérémy Lemesle Committed by GitHub
Browse files

Merge pull request #18 from Korko/analysis-zRAyWx

Apply fixes from StyleCI
parents 815e9ef4 2350fca2
......@@ -24,7 +24,8 @@ class Handler extends ExceptionHandler
*
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
*
* @param \Exception $exception
* @param \Exception $exception
*
* @return void
*/
public function report(Exception $exception)
......@@ -35,8 +36,9 @@ class Handler extends ExceptionHandler
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
*
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
......
......@@ -3,13 +3,11 @@
namespace Korko\SecretSanta\Http\Middleware;
use Closure;
use Illuminate\Routing\Redirector;
use Illuminate\Http\Request;
use Illuminate\Foundation\Application;
use Illuminate\Http\Request;
class Language
{
private $app;
public function __construct(Application $app)
......@@ -20,8 +18,9 @@ class Language
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param \Illuminate\Http\Request $request
* @param \Closure $next
*
* @return mixed
*/
public function handle($request, Closure $next)
......
......@@ -9,12 +9,13 @@ class SmsTools
protected function isUnicode($text)
{
for($i = 0; $i < mb_strlen($text); $i++) {
for ($i = 0; $i < mb_strlen($text); $i++) {
$char = mb_substr($text, $i, 1);
if($char > 127 && $char != "€") {
if ($char > 127 && $char != '€') {
return true;
}
}
return false;
}
......@@ -26,10 +27,11 @@ class SmsTools
$smsCount = 0;
$charLeft = mb_strlen($text);
while($charLeft > 0) {
while ($charLeft > 0) {
$charLeft -= $smsCount < 3 ? $smsLength[$smsCount] : $smsLength[2];
$smsCount++;
}
return $smsCount;
}
}
......@@ -2,8 +2,8 @@
namespace Korko\SecretSanta\Providers;
use Korko\SecretSanta\Libs\SmsTools as LibSmsTools;
use Illuminate\Support\ServiceProvider;
use Korko\SecretSanta\Libs\SmsTools as LibSmsTools;
use SmsTools;
use Validator;
......@@ -16,7 +16,7 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot()
{
Validator::extend('smsCount', function($attribute, $value, $parameters, $validator) {
Validator::extend('smsCount', function ($attribute, $value, $parameters, $validator) {
return SmsTools::count($value) <= intval($parameters[0]);
});
......
......@@ -2,8 +2,8 @@
namespace Korko\SecretSanta\Providers;
use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
class EventServiceProvider extends ServiceProvider
{
......
......@@ -2,8 +2,8 @@
namespace Korko\SecretSanta\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
......@@ -51,7 +51,7 @@ class RouteServiceProvider extends ServiceProvider
{
Route::group([
'middleware' => 'web',
'namespace' => $this->namespace,
'namespace' => $this->namespace,
], function ($router) {
require base_path('routes/web.php');
});
......
......@@ -177,42 +177,42 @@ return [
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
'Blade' => Illuminate\Support\Facades\Blade::class,
'Bus' => Illuminate\Support\Facades\Bus::class,
'Cache' => Illuminate\Support\Facades\Cache::class,
'Config' => Illuminate\Support\Facades\Config::class,
'Cookie' => Illuminate\Support\Facades\Cookie::class,
'Crypt' => Illuminate\Support\Facades\Crypt::class,
'DB' => Illuminate\Support\Facades\DB::class,
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
'Event' => Illuminate\Support\Facades\Event::class,
'File' => Illuminate\Support\Facades\File::class,
'Gate' => Illuminate\Support\Facades\Gate::class,
'Hash' => Illuminate\Support\Facades\Hash::class,
'Lang' => Illuminate\Support\Facades\Lang::class,
'Log' => Illuminate\Support\Facades\Log::class,
'Mail' => Illuminate\Support\Facades\Mail::class,
'App' => Illuminate\Support\Facades\App::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
'Blade' => Illuminate\Support\Facades\Blade::class,
'Bus' => Illuminate\Support\Facades\Bus::class,
'Cache' => Illuminate\Support\Facades\Cache::class,
'Config' => Illuminate\Support\Facades\Config::class,
'Cookie' => Illuminate\Support\Facades\Cookie::class,
'Crypt' => Illuminate\Support\Facades\Crypt::class,
'DB' => Illuminate\Support\Facades\DB::class,
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
'Event' => Illuminate\Support\Facades\Event::class,
'File' => Illuminate\Support\Facades\File::class,
'Gate' => Illuminate\Support\Facades\Gate::class,
'Hash' => Illuminate\Support\Facades\Hash::class,
'Lang' => Illuminate\Support\Facades\Lang::class,
'Log' => Illuminate\Support\Facades\Log::class,
'Mail' => Illuminate\Support\Facades\Mail::class,
'Notification' => Illuminate\Support\Facades\Notification::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
'Recaptcha' => CrazyInventor\Lacaptcha\Facades\Lacaptcha::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
'Redis' => Illuminate\Support\Facades\Redis::class,
'Request' => Illuminate\Support\Facades\Request::class,
'Response' => Illuminate\Support\Facades\Response::class,
'Route' => Illuminate\Support\Facades\Route::class,
'Schema' => Illuminate\Support\Facades\Schema::class,
'Session' => Illuminate\Support\Facades\Session::class,
'Sms' => Aloha\Twilio\Support\Laravel\Facade::class,
'SmsTools' => Korko\SecretSanta\Facades\SmsTools::class,
'Statsd' => League\StatsD\Laravel5\Facade\StatsdFacade::class,
'Storage' => Illuminate\Support\Facades\Storage::class,
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
'Recaptcha' => CrazyInventor\Lacaptcha\Facades\Lacaptcha::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
'Redis' => Illuminate\Support\Facades\Redis::class,
'Request' => Illuminate\Support\Facades\Request::class,
'Response' => Illuminate\Support\Facades\Response::class,
'Route' => Illuminate\Support\Facades\Route::class,
'Schema' => Illuminate\Support\Facades\Schema::class,
'Session' => Illuminate\Support\Facades\Session::class,
'Sms' => Aloha\Twilio\Support\Laravel\Facade::class,
'SmsTools' => Korko\SecretSanta\Facades\SmsTools::class,
'Statsd' => League\StatsD\Laravel5\Facade\StatsdFacade::class,
'Storage' => Illuminate\Support\Facades\Storage::class,
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
],
......
<?php
return [
'max' => 2
'max' => 2,
];
......@@ -10,4 +10,3 @@
| database. Just tell the factory how a default model should look.
|
*/
<?php
return [
'project' => "Project by :author",
'theme' => "Theme by :author",
'icons' => "Icons by :author",
'project' => 'Project by :author',
'theme' => 'Theme by :author',
'icons' => 'Icons by :author',
];
......@@ -2,76 +2,76 @@
return [
'nav.what' => "What's this?",
'nav.how' => "How?",
'nav.how' => 'How?',
'nav.go' => "Let's go!",
'subtitle' => "Offer gifts... Secretly!",
'subtitle' => 'Offer gifts... Secretly!',
'section.what.title' => "What's this?",
'section.what.subtitle' => "Secret Santa Description",
'section.what.heading1' => "The principle",
'section.what.content1' => "Secret Santa’s a fun and original way to share gifts between friends, family, colleagues…
'section.what.title' => "What's this?",
'section.what.subtitle' => 'Secret Santa Description',
'section.what.heading1' => 'The principle',
'section.what.content1' => 'Secret Santa’s a fun and original way to share gifts between friends, family, colleagues…
The process is quite simple: each participant randomly receives the name of the person which will be target for his gift.
The amount for the gift is usually set in advance. (£2, £5, £10 ...) The goal isn’t necessarily to make a big gift but to be creative!",
The amount for the gift is usually set in advance. (£2, £5, £10 ...) The goal isn’t necessarily to make a big gift but to be creative!',
'section.how.title' => "How?",
'section.how.title' => 'How?',
'section.how.subtitle' => "You'll see, it's really simple !",
'section.how.heading1' => "First step: Specify how many people will be taking part as well as their names",
'section.how.content1' => "Thanks to the buttons “add” and “remove” it’s possible to adjust the number of people who’ll be taking part in your Secret Santa party.
'section.how.heading1' => 'First step: Specify how many people will be taking part as well as their names',
'section.how.content1' => 'Thanks to the buttons “add” and “remove” it’s possible to adjust the number of people who’ll be taking part in your Secret Santa party.
For each person, specify their name / last name or nickname. It’s impossible for two people to share a same name, otherwise they won’t be distinguishable from one another.
Please note that secretsanta.io is set up so that it’s impossible for a person to draw their own name.",
Please note that secretsanta.io is set up so that it’s impossible for a person to draw their own name.',
'section.how.heading2' => "Second step: Complete their contact details and any exceptions",
'section.how.content2' => "You can decide whether the participants will get the name of their target via mail or text message or even both.
'section.how.heading2' => 'Second step: Complete their contact details and any exceptions',
'section.how.content2' => 'You can decide whether the participants will get the name of their target via mail or text message or even both.
Simply specify the e-mail and/or phone number for each participant.
(Optional) You can add exceptions if you don’t want spouses drawing each other fill the “partner” field.",
(Optional) You can add exceptions if you don’t want spouses drawing each other fill the “partner” field.',
'section.how.heading3' => "Third step: Prepare the e-mail or SMS content",
'section.how.content3' => "It’ll just fill the title and body fields for the e-mail or SMS message that the participants will receive.
'section.how.heading3' => 'Third step: Prepare the e-mail or SMS content',
'section.how.content3' => 'It’ll just fill the title and body fields for the e-mail or SMS message that the participants will receive.
You must use the keyword “{TARGET}”, it’s mandatory to give each person their “target”.
(Optional) You can also use the keyword “{SANTA}”, it’ll be replaced by the name of the message recipient.",
(Optional) You can also use the keyword “{SANTA}”, it’ll be replaced by the name of the message recipient.',
'section.how.notice' => "For your information: secretsanta.io doesn't save any of your data, nor does it exploit or share them in any other way. The source code can be found on :link ",
'section.go.title' => "Your turn!",
'section.go.subtitle' => "Complete, click and go!",
'section.go.title' => 'Your turn!',
'section.go.subtitle' => 'Complete, click and go!',
'success' => "Successfully sent!",
'success' => 'Successfully sent!',
'participants' => "Participants details",
'participants' => 'Participants details',
'participant.name' => "Name or nickname",
'participant.email' => "E-mail adress",
'participant.phone' => "Participant phone number",
'participant.partner' => "Partner",
'participant.name' => 'Name or nickname',
'participant.email' => 'E-mail adress',
'participant.phone' => 'Participant phone number',
'participant.partner' => 'Partner',
'name.placeholder' => "e.g. Paul or Korko",
'email.placeholder' => "e.g. michel@aol.com",
'phone.placeholder' => "e.g. 01632 960283",
'name.placeholder' => 'e.g. Paul or Korko',
'email.placeholder' => 'e.g. michel@aol.com',
'phone.placeholder' => 'e.g. 01632 960283',
'partner.none' => "None",
'partner.remove' => "Remove",
'partner.add' => "Add a participant",
'partner.none' => 'None',
'partner.remove' => 'Remove',
'partner.add' => 'Add a participant',
'mail.title' => "Email title",
'mail.title' => 'Email title',
'mail.title.placeholder' => "e.g. Secret santa evening of December 23rd at Martin's",
'mail.content' => "Email content",
'mail.content.placeholder' => "e.g. Hi {SANTA}, for the secret santa party, your target is {TARGET}. As a reminder, the amount of the gift is £3!",
'mail.post' => "----
via SecretSanta.io",
'mail.content' => 'Email content',
'mail.content.placeholder' => 'e.g. Hi {SANTA}, for the secret santa party, your target is {TARGET}. As a reminder, the amount of the gift is £3!',
'mail.post' => '----
via SecretSanta.io',
'mail.content.tip1' => "Use “{SANTA}” for the e-mail recipient and “{TARGET}” for the name of the person who'll be the gift's recipient.",
'mail.content.tip2' => "Advice: Try to add a reminder inside your message with the date, location and amount for the gift.",
'mail.content.tip2' => 'Advice: Try to add a reminder inside your message with the date, location and amount for the gift.',
'mail-sms' => "and/or",
'mail-sms' => 'and/or',
'sms.content' => "Content of the sms :span (:left chars left) :espan",
'sms.content.multiple' => "Content of the :count sms :span (:left chars left) :espan",
'sms.content.placeholder' => "e.g. Hi {SANTA}, for the secret santa party, your target is {TARGET}. As a reminder, the amount of the gift is £3!",
'sms.post' => "- via SecretSanta.io",
'sms.content.tip1' => "Use “{SANTA}” for the e-mail recipient and “{TARGET}” for the name of the person who'll be the gift's recipient.",
'sms.content.tip2' => "Advice: Try to add a reminder inside your message with the date, location and amount for the gift.",
'sms.content' => 'Content of the sms :span (:left chars left) :espan',
'sms.content.multiple' => 'Content of the :count sms :span (:left chars left) :espan',
'sms.content.placeholder' => 'e.g. Hi {SANTA}, for the secret santa party, your target is {TARGET}. As a reminder, the amount of the gift is £3!',
'sms.post' => '- via SecretSanta.io',
'sms.content.tip1' => "Use “{SANTA}” for the e-mail recipient and “{TARGET}” for the name of the person who'll be the gift's recipient.",
'sms.content.tip2' => 'Advice: Try to add a reminder inside your message with the date, location and amount for the gift.',
'submit' => "Start randomizing",
'sending' => "Processing",
'submit' => 'Start randomizing',
'sending' => 'Processing',
];
......@@ -2,5 +2,5 @@
return [
'description' => "A fun organisation tool that'll help you hold your very own Secret Santa parties!",
'keywords' => "party,organisation,secretsanta,christmas,gifts,secret",
'keywords' => 'party,organisation,secretsanta,christmas,gifts,secret',
];
<?php
return [
'project' => "Projet de :author",
'theme' => "Theme par :author",
'icons' => "Icones par :author",
'project' => 'Projet de :author',
'theme' => 'Theme par :author',
'icons' => 'Icones par :author',
];
......@@ -2,74 +2,74 @@
return [
'nav.what' => "Qu'est-ce que c'est ?",
'nav.how' => "Comment faire ?",
'nav.how' => 'Comment faire ?',
'nav.go' => "Allez, c'est parti !",
'subtitle' => "Offrez-vous des cadeaux... secrètement !",
'subtitle' => 'Offrez-vous des cadeaux... secrètement !',
'section.what.title' => "Qu'est-ce que c'est ?",
'section.what.subtitle' => "Description du Secret Santa",
'section.what.heading1' => "Le principe",
'section.what.title' => "Qu'est-ce que c'est ?",
'section.what.subtitle' => 'Description du Secret Santa',
'section.what.heading1' => 'Le principe',
'section.what.content1' => "Secret Santa est un moyen drôle et original de s'offrir anonymement des cadeaux entre amis, collègues...
Le déroulement est simple : chaque participant reçoit, de façon aléatoire, le nom de la personne à qui il devra faire un cadeau.
Le montant du cadeau est généralement fixé au préalable (2€, 5€, 10€...)
Le but n'est pas forcément de faire un beau cadeau mais d'être créatif !",
'section.how.title' => "Comment faire ?",
'section.how.title' => 'Comment faire ?',
'section.how.subtitle' => "Vous allez voir, c'est simple !",
'section.how.heading1' => "Première étape : spécifier le nombre et les noms des participants",
'section.how.heading1' => 'Première étape : spécifier le nombre et les noms des participants',
'section.how.content1' => "Grâce aux boutons \"Ajouter un participant\" et \"Enlever un participant\", il est possible d'ajuster le nombre de personnes.
Pour chaque personne, indiquez un nom/prénom ou un pseudonyme. Deux participants ne peuvent avoir le même nom, sinon il est impossible de les différencier.
A noter que secretsanta.fr est conçu de façon à ce qu'une personne ne puisse pas se piocher elle-même.",
'section.how.heading2' => "Deuxième étape : remplir les informations de contact et les exclusions",
'section.how.heading2' => 'Deuxième étape : remplir les informations de contact et les exclusions',
'section.how.content2' => "Vous avez la possibilité de choisir si les participants recevront le nom de leur cible par e-mail, par sms, ou les deux.
Pour cela, précisez pour chacun une adresse e-mail et/ou un numéro de téléphone portable.
(Optionel) Ajoutez des exclusions. Si vous ne voulez pas que les conjoints puissent se piocher l'un l'autre, remplissez le champ \"Partenaire\".",
'section.how.heading3' => "Troisième étape : préparer le mail ou le sms",
'section.how.heading3' => 'Troisième étape : préparer le mail ou le sms',
'section.how.content3' => "Il ne vous reste plus qu'à remplir le titre et le corps du courriel ou du SMS que les participants recevront.
Le mot clef \"{TARGET}\" est obligatoire dans le corps du message afin de donner à chaque personne sa \"cible\".
(Optionel) Vous pouvez aussi utiliser le mot clef \"{SANTA}\" qui sera remplacé par le nom du destinataire du message.",
'section.how.notice' => "Pour votre information : secretsanta.fr ne sauvegarde aucune de vos données ni ne les utilise à d'autres fins. Le code source est disponible sur :link",
'section.go.title' => "À vous de jouer !",
'section.go.title' => 'À vous de jouer !',
'section.go.subtitle' => "Remplissez, cliquez et c'est parti !",
'success' => "Envoyé avec succès !",
'success' => 'Envoyé avec succès !',
'participants' => "Détails des participants",
'participants' => 'Détails des participants',
'participant.name' => "Nom ou pseudonyme",
'participant.email' => "Adresse e-mail",
'participant.phone' => "Téléphone",
'participant.partner' => "Partenaire",
'participant.name' => 'Nom ou pseudonyme',
'participant.email' => 'Adresse e-mail',
'participant.phone' => 'Téléphone',
'participant.partner' => 'Partenaire',
'name.placeholder' => "exemple : Paul ou Korko",
'email.placeholder' => "exemple : michel@aol.com",
'phone.placeholder' => "ex : 0612345678",
'name.placeholder' => 'exemple : Paul ou Korko',
'email.placeholder' => 'exemple : michel@aol.com',
'phone.placeholder' => 'ex : 0612345678',
'partner.none' => "Aucun",
'partner.remove' => "Enlever",
'partner.add' => "Ajouter un participant",
'partner.none' => 'Aucun',
'partner.remove' => 'Enlever',
'partner.add' => 'Ajouter un participant',
'mail.title' => "Titre du mail",
'mail.title.placeholder' => "ex : Soirée secretsanta du 23 décembre chez Martin",
'mail.title' => 'Titre du mail',
'mail.title.placeholder' => 'ex : Soirée secretsanta du 23 décembre chez Martin',
'mail.content' => "Contenu du mail",
'mail.content' => 'Contenu du mail',
'mail.content.placeholder' => "ex : Salut {SANTA}, pour la soirée secret santa, ta cible c'est {TARGET}. Pour rappel, le montant du cadeau est de 3€ !",
'mail.post' => "----
via SecretSanta.fr",
'mail.content.tip1' => "Utilisez \"{SANTA}\" pour le nom de celui qui recevra le mail et \"{TARGET}\" pour le nom de sa cible.",
'mail.content.tip2' => "Conseil : Pensez à rappeler la date, le lieu ainsi que le montant du cadeau.",
'mail.post' => '----
via SecretSanta.fr',
'mail.content.tip1' => 'Utilisez "{SANTA}" pour le nom de celui qui recevra le mail et "{TARGET}" pour le nom de sa cible.',
'mail.content.tip2' => 'Conseil : Pensez à rappeler la date, le lieu ainsi que le montant du cadeau.',
'mail-sms' => "et/ou",
'mail-sms' => 'et/ou',
'sms.content' => "Contenu du sms :span (:left caractères restants) :espan",
'sms.content.multiple' => "Contenu des :count sms :span (:left caractères restants) :espan",
'sms.content' => 'Contenu du sms :span (:left caractères restants) :espan',
'sms.content.multiple' => 'Contenu des :count sms :span (:left caractères restants) :espan',
'sms.content.placeholder' => "ex : Salut {SANTA}, pour la soirée secret santa du 23 décembre chez Martin, ta cible c'est {TARGET}. Pour rappel, le montant du cadeau est de 3€ !",
'sms.post' => "- via SecretSanta.fr",
'sms.content.tip1' => "Utilisez \"{SANTA}\" pour le nom de celui qui recevra le sms et \"{TARGET}\" pour le nom de sa cible.",
'sms.content.tip2' => "Conseil : Pensez à rappeler la date, le lieu ainsi que le montant du cadeau.",
'sms.post' => '- via SecretSanta.fr',
'sms.content.tip1' => 'Utilisez "{SANTA}" pour le nom de celui qui recevra le sms et "{TARGET}" pour le nom de sa cible.',
'sms.content.tip2' => 'Conseil : Pensez à rappeler la date, le lieu ainsi que le montant du cadeau.',
'submit' => "Lancez l'aléatoire !",
'sending' => "Calcul en cours",
'submit' => "Lancez l'aléatoire !",
'sending' => 'Calcul en cours',
];
<?php
return [
'description' => "Outil pour aider à organiser un secret-santa",
'keywords' => "soiree,organisation,secretsanta,noel,cadeau,secret",
'description' => 'Outil pour aider à organiser un secret-santa',
'keywords' => 'soiree,organisation,secretsanta,noel,cadeau,secret',
];
......@@ -93,7 +93,7 @@ return [
'custom' => [
'g-recaptcha-response' => [
'required' => 'Le captcha est obligatoire',
'required' => 'Le captcha est obligatoire',
'recaptcha' => 'Le captcha est invalide',
],
'contentMail' => [
......@@ -101,7 +101,7 @@ return [
],
'contentSms' => [
'contains' => 'Le contenu du sms doit include le mot clef :values',
]
],
],
/*
......
......@@ -16,4 +16,3 @@ use Illuminate\Foundation\Inspiring;
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->describe('Display an inspiring quote');
......@@ -58,7 +58,7 @@ class RequestTest extends TestCase
// Ok for names but partial contact infos (mail)
$content = $this->ajaxPost('/', ['name' => ['toto', 'tata'], 'email' => ['', 'test@test.com']], 422);
$this->assertArrayKeysEquals(['g-recaptcha-response', 'email.0', 'phone.0', 'title', 'contentMail'], $content);
}
}
// Names and contact infos but no mail body nor sms body
public function testContactBodiesMail()
......
......@@ -12,4 +12,3 @@ class SmsTest extends TestCase
$this->assertEquals(2, SmsTools::count(implode('', array_fill(0, 161, 'a'))));
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment