<?php class internalTools extends Controller { /** * Cette fonction parse un numéro pour le retourner sans espaces, etc. * @param string $number : Le numéro de téléphone à parser * @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 parsePhone($number) { $number = preg_replace('#[^-0-9+]#', '', $number); if (preg_match('#^(0|\+[1-9]{1,3}|\+1\-[0-9]{3})[1-9][0-9]{8}$#', $number)) { return $number; } return false; } /** * Cette fonction parse un numéro pour le retourner avec des espaces, etc. * @param string $number : Le numéro de téléphone à parser * @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 phoneAddSpace($number) { return preg_replace('#(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})#', '$1 $2 $3 $4 $5', $number); } /** * Cette fonction fait la correspondance entre un type d'evenement et une icone font awesome. * @param string $type : Le type de l'évenement à analyser * @return string : Le nom de l'icone à afficher (ex : fa-user) */ public static function eventTypeToIcon($type) { switch ($type) { case 'USER_ADD' : $logo = 'fa-user'; break; case 'CONTACT_ADD' : $logo = 'fa-user'; break; case 'GROUP_ADD' : $logo = 'fa-group'; break; case 'SCHEDULED_ADD' : $logo = 'fa-calendar'; break; case 'COMMAND_ADD' : $logo = 'fa-terminal'; break; default : $logo = 'fa-question'; } return $logo; } /** * Cette fonction vérifie une date * @param string $date : La date a valider * @param string $format : Le format de la date * @return boolean : Vrai si la date et valide, faux sinon */ public static function validateDate($date, $format) { $objectDate = DateTime::createFromFormat($format, $date); return ($objectDate && $objectDate->format($format) == $date); } /** * Cette fonction parse un texte, pour en extraire des données contenu dans des drapeaux au format [FLAG:contenu du drapeau] * @param string $texte : Le texte à parser * @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 parseForFlag($texte) { $returns = array(); $results = array(); while(preg_match('#\[(.*)(?<!\\\):(.*)(?<!\\\)\]#Uui', $texte, $results)) //Tant qu'on recuèpre un flag { $returns[mb_strtoupper($results[1])] = $results[2]; $texte = str_replace($results[0], '', $texte); } return $returns; } /** * Cette fonction retourne un mot de passe généré aléatoirement * @param int $length : Taille du mot de passe à générer * @return string : Le mot de passe aléatoire */ public static function generatePassword($length) { $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-@()?.:!%*$&/'; $password = ''; $chars_length = mb_strlen($chars) - 1; $i = 0; while ($i < $length) { $i ++; $password .= $chars[rand(0, $chars_length)]; } return $password; } /** * Cette fonction vérifie si un utilisateur et connecté, et si il ne l'est pas, redirige sur la page de connexion * @return void */ public static function verifyConnect() { if (!isset($_SESSION['connect']) || !$_SESSION['connect']) { $controller = new Controller(); header('Location: ' . $controller->generateUrl('connect')); die(); } } /** * Cette fonction vérifie si un argument csrf a été fourni et est valide * @param string $csrf : argument optionel, qui est la chaine csrf à vérifier. Si non fournie, la fonction cherchera à utiliser $_GET['csrf'] ou $_POST['csrf']. * @return boolean : True si le csrf est valide. False sinon. */ public static function verifyCSRF($csrf = '') { if (!$csrf) { $csrf = isset($_GET['csrf']) ? $_GET['csrf'] : $csrf; $csrf = isset($_POST['csrf']) ? $_POST['csrf'] : $csrf; } if ($csrf == $_SESSION['csrf']) { return true; } return false; } }