2019-10-29 14:57:13 +01:00
< ? php
2019-10-30 00:30:39 +01:00
/*
* This file is part of PHP CS Fixer .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
* Dariusz Rumiński < dariusz . ruminski @ gmail . com >
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE .
*/
namespace controllers\internals ;
2019-10-29 14:57:13 +01:00
2019-10-29 18:36:25 +01:00
class Tool extends \descartes\InternalController
{
/**
* Cette fonction parse un numéro pour le retourner sans espaces , etc .
2019-10-30 00:30:39 +01:00
*
2019-10-29 18:36:25 +01:00
* @ param string $number : Le numéro de téléphone à parser
2019-10-30 00:30:39 +01:00
*
2019-10-29 18:36:25 +01:00
* @ return mixed : Si le numéro est bien un numéro de téléphone , on retourne le numéro parsé . Sinon , on retourne faux
*/
public static function parse_phone ( $number )
{
$number = preg_replace ( '#[^-0-9+]#' , '' , $number );
2019-10-30 00:30:39 +01:00
if ( preg_match ( '#^(0|\+[1-9]{1,3}|\+1\-[0-9]{3})[1-9][0-9]{8,10}$#' , $number ))
{
2019-10-29 18:36:25 +01:00
return $number ;
}
2019-10-30 00:30:39 +01:00
2019-10-29 18:36:25 +01:00
return false ;
}
2019-10-29 14:57:13 +01:00
2019-10-29 18:36:25 +01:00
/**
* Cette fonction parse un numéro pour le retourner avec des espaces , etc .
2019-10-30 00:30:39 +01:00
*
2019-10-29 18:36:25 +01:00
* @ param string $number : Le numéro de téléphone à parser
2019-10-30 00:30:39 +01:00
*
2019-10-29 18:36:25 +01:00
* @ return mixed : Si le numéro est bien un numéro de téléphone , on retourne le numéro parsé . Sinon , on retourne faux
*/
public static function phone_add_space ( $number )
{
return preg_replace ( '#(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})#' , '$1 $2 $3 $4 $5' , $number );
}
2019-10-29 14:57:13 +01:00
2019-10-29 18:36:25 +01:00
/**
* Cette fonction fait la correspondance entre un type d ' evenement et une icone font awesome .
2019-10-30 00:30:39 +01:00
*
2019-10-29 18:36:25 +01:00
* @ param string $type : Le type de l ' évenement à analyser
2019-10-30 00:30:39 +01:00
*
2019-10-29 18:36:25 +01:00
* @ return string : Le nom de l ' icone à afficher ( ex : fa - user )
*/
public static function event_type_to_icon ( $type )
{
switch ( $type ) {
case 'USER_ADD' :
$logo = 'fa-user' ;
2019-10-30 00:30:39 +01:00
2019-10-29 18:36:25 +01:00
break ;
case 'CONTACT_ADD' :
$logo = 'fa-user' ;
2019-10-30 00:30:39 +01:00
2019-10-29 18:36:25 +01:00
break ;
case 'GROUP_ADD' :
$logo = 'fa-group' ;
2019-10-30 00:30:39 +01:00
2019-10-29 18:36:25 +01:00
break ;
case 'SCHEDULED_ADD' :
$logo = 'fa-calendar' ;
2019-10-30 00:30:39 +01:00
2019-10-29 18:36:25 +01:00
break ;
case 'COMMAND_ADD' :
$logo = 'fa-terminal' ;
2019-10-30 00:30:39 +01:00
2019-10-29 18:36:25 +01:00
break ;
default :
$logo = 'fa-question' ;
}
2019-10-29 14:57:13 +01:00
2019-10-29 18:36:25 +01:00
return $logo ;
}
2019-10-29 14:57:13 +01:00
2019-10-29 18:36:25 +01:00
/**
2019-10-30 00:30:39 +01:00
* Cette fonction vérifie une date .
*
* @ param string $date : La date a valider
2019-10-29 18:36:25 +01:00
* @ param string $format : Le format de la date
2019-10-30 00:30:39 +01:00
*
* @ return bool : Vrai si la date et valide , faux sinon
2019-10-29 18:36:25 +01:00
*/
public static function validate_date ( $date , $format )
{
$objectDate = \DateTime :: createFromFormat ( $format , $date );
2019-10-30 00:30:39 +01:00
return $objectDate && $objectDate -> format ( $format ) === $date ;
2019-10-29 18:36:25 +01:00
}
2019-10-29 14:57:13 +01:00
2019-10-29 18:36:25 +01:00
/**
2019-10-30 00:30:39 +01:00
* Cette fonction parse un texte , pour en extraire des données contenu dans des drapeaux au format [ FLAG : contenu du drapeau ] .
*
2019-10-29 18:36:25 +01:00
* @ param string $texte : Le texte à parser
2019-10-30 00:30:39 +01:00
*
2019-10-29 18:36:25 +01:00
* @ return mixed : Tableau de la forme 'FLAG' => 'contenu du drapeau' . si on trouve une forme correcte ( Le contenu de FLAG sera mis en majuscule automatiquement ) . Sinon le tableau vide .
*/
public static function parse_for_flag ( $texte )
{
2019-10-30 00:30:39 +01:00
$returns = [];
$results = [];
while ( preg_match ( '#\[(.*)(?<!\\\):(.*)(?<!\\\)\]#Uui' , $texte , $results ))
{ //Tant qu'on recuèpre un flag
2019-10-29 18:36:25 +01:00
$returns [ mb_strtoupper ( $results [ 1 ])] = $results [ 2 ];
$texte = str_replace ( $results [ 0 ], '' , $texte );
}
2019-10-30 00:30:39 +01:00
2019-10-29 18:36:25 +01:00
return $returns ;
}
2019-10-29 14:57:13 +01:00
2019-10-29 18:36:25 +01:00
/**
2019-10-30 00:30:39 +01:00
* Cette fonction retourne un mot de passe généré aléatoirement .
*
2019-10-29 18:36:25 +01:00
* @ param int $length : Taille du mot de passe à générer
2019-10-30 00:30:39 +01:00
*
2019-10-29 18:36:25 +01:00
* @ return string : Le mot de passe aléatoire
*/
public static function generate_password ( $length )
{
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-@()?.:!%*$&/' ;
$password = '' ;
$chars_length = mb_strlen ( $chars ) - 1 ;
$i = 0 ;
2019-10-30 00:30:39 +01:00
while ( $i < $length )
{
++ $i ;
2019-10-29 18:36:25 +01:00
$password .= $chars [ rand ( 0 , $chars_length )];
}
2019-10-30 00:30:39 +01:00
2019-10-29 18:36:25 +01:00
return $password ;
}
/**
2019-10-30 00:30:39 +01:00
* Cette fonction vérifie si un utilisateur et connecté , et si il ne l ' est pas , redirige sur la page de connexion .
2019-10-29 18:36:25 +01:00
*/
2019-10-30 00:17:10 +01:00
public static function verifyconnect ()
2019-10-29 18:36:25 +01:00
{
2019-10-30 00:30:39 +01:00
if ( ! isset ( $_SESSION [ 'connect' ]) || ! $_SESSION [ 'connect' ])
{
2019-10-29 18:36:25 +01:00
header ( 'Location: /' );
die ();
}
2019-10-29 14:57:13 +01:00
}
2019-10-30 00:30:39 +01:00
2019-10-29 14:57:13 +01:00
/**
* Check if the user is admin .
2019-10-30 00:30:39 +01:00
*
* @ return bool : True if admin , False else
2019-10-29 18:36:25 +01:00
*/
public static function is_admin ()
{
2019-11-10 00:27:42 +01:00
return ( bool ) ( $_SESSION [ 'user' ][ 'admin' ] ? ? false );
2019-10-29 14:57:13 +01:00
}
/**
2019-10-30 00:30:39 +01:00
* Cette fonction s 'occupe d' envoyer les emails .
*
* @ param string $to : L ' adresse mail à laquelle envoyer le mail
* @ param array $settings : Les settings du mail , type , sujet , template
* @ param array $datas : Les données à fournir au template du mail
2019-10-29 14:57:13 +01:00
*/
2019-10-30 00:17:10 +01:00
public static function send_email ( $to , $settings , $datas = [])
2019-10-29 14:57:13 +01:00
{
2019-10-30 00:17:10 +01:00
$controller = new \descartes\Controller ();
2019-10-30 00:30:39 +01:00
2019-11-10 00:27:42 +01:00
ob_start ();
$controller -> render ( $settings [ 'template' ], $datas );
$content = ob_get_clean ();
$success = mail ( $to , $settings [ 'subject' ], $content );
return $success ;
2019-10-29 14:57:13 +01:00
}
2019-10-29 18:36:25 +01:00
}