<?php
	class Generale{
		const MAX_ROW=5;
		const COOKIE_MAX_INACTIVITY_SECOND=60*10*3;//30 minutes
		const ERREUR_INCONNUE="Une erreur inconnue est survenue.";
		const FORMULAIRE_INCONNUE="Le formulaire que vous souhaitez soumettre est inconnu du système.";
		const DROIT_NON_ACQUIS="Vous ne disposez pas des droits à cette fonctionnalité.";
		
		static function gGetPrimeVoyage($d){
			$prime=[
				'afrique'=>[
					'7'=>7000,
					'10'=>11000,
					'15'=>13000,
					'21'=>18000,
					'30'=>24000,
					'60'=>34000,
					'90'=>42500,
					'180'=>55000,
					'365'=>70000,
				],
				'asie'=>[
					'7'=>11000,
					'10'=>15000,
					'15'=>17000,
					'21'=>25000,
					'30'=>32500,
					'60'=>45000,
					'90'=>60000,
					'180'=>82000,
					'365'=>105000,
				],
				'europe'=>[
					'7'=>11000,
					'10'=>13250,
					'15'=>16000,
					'21'=>22000,
					'30'=>27000,
					'60'=>37500,
					'90'=>47000,
					'180'=>65000,
					'365'=>75000,
				],
				'monde entier'=>[
					'7'=>11500,
					'10'=>15000,
					'15'=>17500,
					'21'=>20000,
					'30'=>31000,
					'60'=>45000,
					'90'=>60000,
					'180'=>82000,
					'365'=>105000,
				],
				// 'programme etudiants classic'=>[
				// 	'6 mois -  maximum 180 jours consécutifs'=>350000,
				// 	'9 mois -  maximum 276 jours consécutifs'=>375000,
				// 	'12 mois - maximum 365 jours consécutifs'=>425000,
				// ],
				// 'programme etudiants premium'=>[
				// 	'6 mois -  maximum 180 jours consécutifs'=>416500,
				// 	'9 mois -  maximum 276 jours consécutifs'=>446250,
				// 	'12 mois - maximum 365 jours consécutifs'=>505750,
				// ],
				'afrique-7'=>'7 000 F / voyageur',
				'afrique-10'=>'11 000 F / voyageur',
				'afrique-15'=>'13 000 F / voyageur',
				'afrique-21'=>'18 000 F / voyageur',
				'afrique-30'=>'23 800 F / voyageur',
				'afrique-45'=>'30 500 F / voyageur',
				'afrique-60'=>'34 000 F / voyageur',
				'afrique-90'=>'42 500 F / voyageur',
				'afrique-180'=>'55 000 F / voyageur',
				'afrique-365'=>'70 000 F / voyageur',

				'europe-7'=>'11 000 F / voyageur',
				'europe-10'=>'13 250 F / voyageur',
				'europe-15'=>'16 000 F / voyageur',
				'europe-21'=>'22 000 F / voyageur',
				'europe-30'=>'27 000 F / voyageur',
				'europe-45'=>'34 000 F / voyageur',
				'europe-60'=>'37 500 F / voyageur',
				'europe-90'=>'47 000 F / voyageur',
				'europe-180'=>'65 000 F / voyageur',
				'europe-365'=>'75 000 F / voyageur',
				
				'monde-7'=>'11 500 F / voyageur',
				'monde-10'=>'15 000 F / voyageur',
				'monde-15'=>'17 000 F / voyageur',
				'monde-21'=>'20 000 F / voyageur',
				'monde-30'=>'31 000 F / voyageur',
				'monde-45'=>'42 000 F / voyageur',
				'monde-60'=>'45 000 F / voyageur',
				'monde-90'=>'60 000 F / voyageur',
				'monde-180'=>'82 000 F / voyageur',
				'monde-365'=>'105 000 F / voyageur',
				
				'classic-6'=>'350 000 F / étudiant',
				'classic-9'=>'375 000 F / étudiant',
				'classic-12'=>'425 000 F / étudiant',

				'premium-6'=>'416 500 F / étudiant',
				'premium-9'=>'446 250 F / étudiant',
				'premium-12'=>'505 750 F / étudiant',

				'evacuation'=>'60 000 F / individu',
			];
			return isset($prime[$d]) ? $prime[$d] : false;
		}
		
		static function gSetFormSession($d){
			return $_SESSION['post_'.$d]=SELF::gRandomCSRF();//La liste des profils utilisateurs
		}
		
		static function gCheckFormSession($d,$s){
			if(!isset($_SESSION['post_'.$s])) return SELF::FORMULAIRE_INCONNUE;
			if( $_SESSION['post_'.$s] !=$d) return SELF::FORMULAIRE_INCONNUE;
			return true;
		}
		
		static function gReturnMessage($d){
			$r=new stdClass();
			$r->msg=$d;
			return $r;
		}

		static function gReturnData($d){
			$r=new stdClass();
			$r->data=$d;
			return $r;
		}
		
		static function gRandomCSRF(){
			return uniqid(bin2hex(random_bytes(255)), true);
		}

		static function gRandomCode( $l = 4, $c = '!@#$%&*()_+-={}[];:<>,.?abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'){
			return substr(str_shuffle( $c ), 0, $l);
		}

		static function gSetJsonObj($d=array()){
			 $jRes= json_encode($d, JSON_FORCE_OBJECT);
			 return json_decode($jRes);
		}

		static function gSetJsonString($d=array()){
			 return json_encode($d, JSON_FORCE_OBJECT);
		}
		
		static function gCheckEmail($d=array()){
			 	foreach ($d as $k => $v) {
					 if(!preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $v))
						 return SELF::gReturnMessage("L'adresse e-mail $v est incorrecte");
 				}
				return SELF::gReturnData(true);
		}

		static function gNumber($d=0){
			return number_format(str_replace(" ","",(double)$d),0,","," ");
		}

		static function gFloat($d=0.0){
			return number_format(str_replace(" ","",$d),2,"."," ");
		}

		static function gPhone($d=''){
			if(!$d) return '';
			if( preg_match( '/^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/', $d,  $m ) )
				return implode(' ',$m);
			return $d;
		}

		static function gSanitize($d,$t=''){
				switch ($t) {
						default: return trim(htmlspecialchars($d,ENT_QUOTES)); break;
						case 'isset': return isset($d) && !trim($d) ; break;
						case 'file': $_d=pathinfo($d); return sha1(mb_strtolower($_d['filename'])).'.'.mb_strtolower($_d['extension']); break;
						case 'utf8': mb_convert_encoding($d, "ISO-8859-1", "HTML-ENTITIES"); break;
						case 'up': return mb_strtolower(trim(stripslashes($d))); break;
						case 'low': return mb_strtoupper(trim(stripslashes($d))); break;
						case 'paragraph': return preg_replace("/[^a-zA-Z0-9 \!\,\?\.\r\n s (<br>)]/", '', preg_replace("!(<br(?:\s?/)?>\s*){2,}!s", "<br />\n<br />\n", $data)); break;
						case 'url': return trim(filter_var($d, FILTER_SANITIZE_ENCODED)); break;
						case 'mail': return trim(filter_var($d, FILTER_SANITIZE_EMAIL)); break;
						case 'int': return (int)trim(filter_var(str_replace(' ','',$d) , FILTER_SANITIZE_NUMBER_INT)); break;
						case 'float': return trim(filter_var(str_replace(array(' ',','),array('','.'),$d) , FILTER_SANITIZE_NUMBER_FLOAT,FILTER_FLAG_ALLOW_FRACTION)); break;
				}
		}
	}
?>
