From cd6779701d1a0ef9cf5d56c2232d22d5957d1d5c Mon Sep 17 00:00:00 2001
From: Pierre-Lin Bonnemaison <pierre.lin@free.fr>
Date: Tue, 29 Sep 2015 00:03:02 +0200
Subject: [PATCH] =?UTF-8?q?Ajout=20du=20r=C3=A9glages=20sur=20l'internatio?=
 =?UTF-8?q?nalisation=20des=20num=C3=A9ros.=20Unification=20des=20r=C3=A9g?=
 =?UTF-8?q?lages.=20Fix=20des=20labels=20sur=20les=20num=C3=A9ros=20(retra?=
 =?UTF-8?q?it=20de=20l'avertissement=20sur=20l'internationalisation)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 controllers/settings.php       | 109 +++++----------------------------
 createDatabase.sql             |   6 +-
 templates/contacts/add.php     |   6 +-
 templates/contacts/edit.php    |   6 +-
 templates/scheduleds/add.php   |   8 +--
 templates/scheduleds/edit.php  |   8 +--
 templates/settings/default.php |  44 +++++++++++--
 7 files changed, 70 insertions(+), 117 deletions(-)

diff --git a/controllers/settings.php b/controllers/settings.php
index df1757d..bd120f7 100755
--- a/controllers/settings.php
+++ b/controllers/settings.php
@@ -28,12 +28,13 @@
 		}
 
 		/**
-		 * Cette fonction permet de mettre à jour l'activation ou la désactivation du transfer des SMS
+		 * Cette fonction permet de mettre à jour un réglage
+		 * @param string $settingName : Le nom du réglage à modifier
 		 * @param $csrf : Le jeton CSRF
-		 * @param string $_POST['transfer'] : Le nouveau transfer
-		 * @return void;
+		 * @param string $_POST['settingValue'] : La nouvelle valeur du réglage
+		 * @return boolean
 		 */
-		public function changeTransfer($csrf)
+		public function change($settingName, $csrf)
 		{
 			//On vérifie que le jeton csrf est bon
 			if (!internalTools::verifyCSRF($csrf))
@@ -43,99 +44,17 @@
 				return false;
 			}
 
-			//Creation de l'object de base de données
+			//On vérifie que la valeur est définie
+			if (!isset($_POST['settingValue']))
+			{
+				$_SESSION['errormessage'] = 'Vous devez fournir une valeur pour le réglage !';
+				header('Location: ' . $this->generateUrl('settings'));
+				return false;
+			}
+
 			global $db;
-			
-			if (!isset($_POST['transfer']))
-			{
-				$_SESSION['errormessage'] = 'Vous devez renseigner un valeur';
-				header('Location: ' . $this->generateUrl('settings'));
-				return false;
-			}
 
-			$transfer = (int)$_POST['transfer'];
-
-			if (!$db->updateTableWhere('settings', ['value' => $transfer], ['name' => 'transfer']))
-			{
-				$_SESSION['errormessage'] = 'Impossible de mettre les données à jour.';
-				header('Location: ' . $this->generateUrl('settings'));
-				return false;
-			}
-
-			$_SESSION['successmessage'] = 'Les données ont été mises à jour.';
-			header('Location: ' . $this->generateUrl('settings'));
-			return true;
-		}
-
-		/**
-		 * Cette fonction permet de mettre à jour l'activation ou la désactivation de SMS-STOP
-		 * @param $csrf : Le jeton CSRF
-		 * @param string $_POST['stop'] : Le nouveau stop
-		 * @return void;
-		 */
-		public function changeSmsStop($csrf)
-		{
-			//On vérifie que le jeton csrf est bon
-			if (!internalTools::verifyCSRF($csrf))
-			{
-				$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
-				header('Location: ' . $this->generateUrl('settings'));
-				return false;
-			}
-
-			//Creation de l'object de base de données
-			global $db;
-			
-			if (!isset($_POST['sms_stop']))
-			{
-				$_SESSION['errormessage'] = 'Vous devez renseigner un valeur';
-				header('Location: ' . $this->generateUrl('settings'));
-				return false;
-			}
-
-			$stop = (int)$_POST['sms_stop'];
-
-			if (!$db->updateTableWhere('settings', ['value' => $stop], ['name' => 'sms_stop']))
-			{
-				$_SESSION['errormessage'] = 'Impossible de mettre les données à jour.';
-				header('Location: ' . $this->generateUrl('settings'));
-				return false;
-			}
-
-			$_SESSION['successmessage'] = 'Les données ont été mises à jour.';
-			header('Location: ' . $this->generateUrl('settings'));
-			return true;
-		}
-
-		/**
-		 * Cette fonction permet de mettre à jour l'activation ou la désactivation de la detection d'URL dans les discussions
-		 * @param $csrf : Le jeton CSRF
-		 * @param string $_POST['detect_url'] : Le nouveau stop
-		 * @return void;
-		 */
-		public function changeDetectionUrl($csrf)
-		{
-			//On vérifie que le jeton csrf est bon
-			if (!internalTools::verifyCSRF($csrf))
-			{
-				$_SESSION['errormessage'] = 'Jeton CSRF invalide !';
-				header('Location: ' . $this->generateUrl('settings'));
-				return false;
-			}
-
-			//Creation de l'object de base de données
-			global $db;
-			
-			if (!isset($_POST['detect_url']))
-			{
-				$_SESSION['errormessage'] = 'Vous devez renseigner un valeur';
-				header('Location: ' . $this->generateUrl('settings'));
-				return false;
-			}
-
-			$detectUrl = (int)$_POST['detect_url'];
-
-			if (!$db->updateTableWhere('settings', ['value' => $detectUrl], ['name' => 'detect_url']))
+			if (!$db->updateTableWhere('settings', ['value' => $_POST['settingValue']], ['name' => $settingName]))
 			{
 				$_SESSION['errormessage'] = 'Impossible de mettre les données à jour.';
 				header('Location: ' . $this->generateUrl('settings'));
diff --git a/createDatabase.sql b/createDatabase.sql
index f4e8c61..51843d9 100755
--- a/createDatabase.sql
+++ b/createDatabase.sql
@@ -6,7 +6,7 @@ USE raspisms;
 CREATE TABLE IF NOT EXISTS settings
 (
 	id INT NOT NULL AUTO_INCREMENT,
-	name VARCHAR(20) NOT NULL,
+	name VARCHAR(50) NOT NULL,
 	value VARCHAR(1000) NOT NULL,
 	PRIMARY KEY (id),
 	UNIQUE (name)
@@ -151,4 +151,6 @@ CREATE TABLE IF NOT EXISTS sms_stop
 INSERT INTO settings (name, value)
 VALUES ('transfer', '1'),
 ('sms_stop', '1'),
-('detect_url', '1'); 
+('detect_url', '1'),
+('default_phone_country', 'fr'), 
+('preferred_phone_country', 'fr,be,ca'); 
diff --git a/templates/contacts/add.php b/templates/contacts/add.php
index f4e87f0..35e3db5 100755
--- a/templates/contacts/add.php
+++ b/templates/contacts/add.php
@@ -46,7 +46,7 @@
 									</div>
 								</div>	
 								<div class="form-group">
-									<label>Numéro de téléphone du contact<span class="italic small-text text-danger"> - Vous devriez utiliser un numéro international (Ex. : +33612345678)</span></label>
+									<label>Numéro de téléphone du contact</label>
 									<div class="form-group">
 										<input name="" class="form-control" type="tel" id="phone-international-input">
 										<input name="phone" type="hidden" id="phone-hidden-input" required>
@@ -66,8 +66,8 @@
 	jQuery('document').ready(function($)
 	{
 		jQuery('#phone-international-input').intlTelInput({
-			defaultCountry: 'fr',
-			preferredCountries: ['fr', 'be', 'ca'],
+			defaultCountry: '<?php secho(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>',
+			preferredCountries: <?php secho(json_encode(explode(',', RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY)), false, false); ?>,
 			nationalMode: true,
 			utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
 		});
diff --git a/templates/contacts/edit.php b/templates/contacts/edit.php
index e76c140..33ea099 100755
--- a/templates/contacts/edit.php
+++ b/templates/contacts/edit.php
@@ -50,7 +50,7 @@
 										</div>
 									</div>	
 									<div class="form-group">
-										<label>Numéro de téléphone du contact<span class="italic small-text text-danger"> - Vous devriez utiliser un numéro international (Ex. : +33612345678)</span></label>
+										<label>Numéro de téléphone du contact</label>
 										<div class="form-group">
 											<input name="" class="form-control phone-international-input" type="tel" contact-id="<?php secho($contact['id']); ?>" value="<?php secho($contact['number']); ?>">
 											<input name="contacts[<?php secho($contact['id']); ?>][phone]" type="hidden" id="phone-hidden-input-<?php secho($contact['id']); ?>" required>
@@ -74,8 +74,8 @@
 	jQuery('document').ready(function($)
 	{
 		jQuery('.phone-international-input').intlTelInput({
-			defaultCountry: 'fr',
-			preferredCountries: ['fr', 'be', 'ca'],
+			defaultCountry: '<?php secho(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>',
+			preferredCountries: <?php secho(json_encode(explode(',', RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY)), false, false); ?>,
 			nationalMode: true,
 			utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
 		});
diff --git a/templates/scheduleds/add.php b/templates/scheduleds/add.php
index 3ef7b50..221fee3 100755
--- a/templates/scheduleds/add.php
+++ b/templates/scheduleds/add.php
@@ -97,8 +97,8 @@
 		});
 
 		jQuery('.phone-international-input').intlTelInput({
-			defaultCountry: 'fr',
-			preferredCountries: ['fr', 'be', 'ca'],
+			defaultCountry: '<?php secho(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>',
+			preferredCountries: <?php secho(json_encode(explode(',', RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY)), false, false); ?>,
 			nationalMode: true,
 			utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
 		});
@@ -120,8 +120,8 @@
 			jQuery(this).before(newScheduledsNumberGroup);
 
 			jQuery('.phone-international-input').intlTelInput({
-				defaultCountry: 'fr',
-				preferredCountries: ['fr', 'be', 'ca'],
+				defaultCountry: '<?php secho(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>',
+				preferredCountries: <?php secho(json_encode(explode(',', RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY)), false, false); ?>,
 				nationalMode: true,
 				utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
 			});
diff --git a/templates/scheduleds/edit.php b/templates/scheduleds/edit.php
index 7fdff9d..6105367 100755
--- a/templates/scheduleds/edit.php
+++ b/templates/scheduleds/edit.php
@@ -115,8 +115,8 @@
 		});
 
 		jQuery('.phone-international-input').intlTelInput({
-			defaultCountry: 'fr',
-			preferredCountries: ['fr', 'be', 'ca'],
+			defaultCountry: '<?php secho(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>',
+			preferredCountries: <?php secho(json_encode(explode(',', RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY)), false, false); ?>,
 			nationalMode: true,
 			utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
 		});
@@ -139,8 +139,8 @@
 			jQuery(this).before(newScheduledsNumberGroup);
 
 			jQuery('.phone-international-input').intlTelInput({
-				defaultCountry: 'fr',
-				preferredCountries: ['fr', 'be', 'ca'],
+				defaultCountry: '<?php secho(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>',
+				preferredCountries: <?php secho(json_encode(explode(',', RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY)), false, false); ?>,
 				nationalMode: true,
 				utilsScript: '<?php echo HTTP_PWD; ?>/js/intlTelInput/lib/libphonenumber/utils.js'
 			});
diff --git a/templates/settings/default.php b/templates/settings/default.php
index f7ae82f..89dfe69 100755
--- a/templates/settings/default.php
+++ b/templates/settings/default.php
@@ -40,10 +40,10 @@
 										<h4 class="panel-title"><i class="fa fa-share fa-fw"></i> Transfert des SMS par e-mail</h4>
 									</div>
 									<div class="panel-body">
-										<form action="<?php echo $this->generateUrl('settings', 'changeTransfer', [$_SESSION['csrf']]); ?>" method="POST">
+										<form action="<?php echo $this->generateUrl('settings', 'change', ['transfer', $_SESSION['csrf']]); ?>" method="POST">
 											<div class="form-group">
 												<label>Transfert activé : </label>
-												<select name="transfer" class="form-control">
+												<select name="settingValue" class="form-control">
 													<option value="0">Non</option>
 													<option value="1" <?php echo RASPISMS_SETTINGS_TRANSFER ? 'selected' : ''; ?>>Oui</option>
 												</select>
@@ -59,10 +59,10 @@
 										<h4 class="panel-title"><i class="fa fa-link fa-fw"></i> Détection des URL dans les discussions</h4>
 									</div>
 									<div class="panel-body">
-										<form action="<?php echo $this->generateUrl('settings', 'changeDetectionUrl', [$_SESSION['csrf']]); ?>" method="POST">
+										<form action="<?php echo $this->generateUrl('settings', 'change', ['detection_url', $_SESSION['csrf']]); ?>" method="POST">
 											<div class="form-group">
 												<label>Détection activé : </label>
-												<select name="detect_url" class="form-control">
+												<select name="settingValue" class="form-control">
 													<option value="0">Non</option>
 													<option value="1" <?php echo RASPISMS_SETTINGS_DETECT_URL ? 'selected' : ''; ?>>Oui</option>
 												</select>
@@ -73,6 +73,22 @@
 										</form>
 									</div>
 								</div>
+								<div class="panel panel-default">
+									<div class="panel-heading">
+										<h4 class="panel-title"><i class="fa fa-phone fa-fw"></i> Pays préférés numéros internationaux</h4>
+									</div>
+									<div class="panel-body">
+										<form action="<?php echo $this->generateUrl('settings', 'change', ['preferred_phone_country', $_SESSION['csrf']]); ?>" method="POST">
+											<div class="form-group">
+												<label>Code des pays (norme ISO 3166-1 alpha-2) séparés par des virgules : </label>
+												<input name="settingValue" class="form-control" value="<?php secho(RASPISMS_SETTINGS_PREFERRED_PHONE_COUNTRY); ?>" />
+											</div>	
+											<div class="text-center">
+												<button class="btn btn-success">Mettre à jour les données</button>	
+											</div>
+										</form>
+									</div>
+								</div>
 							</div>
 							<div class="col-xs-12 col-md-6">
 								<div class="panel panel-default">
@@ -80,10 +96,10 @@
 										<h4 class="panel-title"><i class="fa fa-ban fa-fw"></i> Activation de SMS-STOP</h4>
 									</div>
 									<div class="panel-body">
-										<form action="<?php echo $this->generateUrl('settings', 'changeSmsStop', [$_SESSION['csrf']]); ?>" method="POST">
+										<form action="<?php echo $this->generateUrl('settings', 'change', ['sms_stop', $_SESSION['csrf']]); ?>" method="POST">
 											<div class="form-group">
 												<label>SMS STOP activé : </label>
-												<select name="sms_stop" class="form-control">
+												<select name="settingValue" class="form-control">
 													<option value="0">Non</option>
 													<option value="1" <?php echo RASPISMS_SETTINGS_SMS_STOP ? 'selected' : ''; ?>>Oui</option>
 												</select>
@@ -94,6 +110,22 @@
 										</form>
 									</div>
 								</div>
+								<div class="panel panel-default">
+									<div class="panel-heading">
+										<h4 class="panel-title"><i class="fa fa-phone fa-fw"></i> Pays par défaut numéros internationaux</h4>
+									</div>
+									<div class="panel-body">
+										<form action="<?php echo $this->generateUrl('settings', 'change', ['default_phone_country', $_SESSION['csrf']]); ?>" method="POST">
+											<div class="form-group">
+												<label>Code du pays (norme ISO 3166-1 alpha-2) : </label>
+												<input name="settingValue" class="form-control" value="<?php secho(RASPISMS_SETTINGS_DEFAULT_PHONE_COUNTRY); ?>" />
+											</div>	
+											<div class="text-center">
+												<button class="btn btn-success">Mettre à jour les données</button>	
+											</div>
+										</form>
+									</div>
+								</div>
 							</div>
 						</div>
 					</div>