PageRenderTime 28ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/includes/class/utils.class.php

http://adminserv.googlecode.com/
PHP | 272 lines | 165 code | 29 blank | 78 comment | 57 complexity | 096f9bf58f93555f6293319fb5c53ce3 MD5 | raw file
  1. <?php
  2. /*
  3. * Classe utilitaire générale
  4. */
  5. abstract class Utils {
  6. /**
  7. * Redirection
  8. *
  9. * @param bool $auto -> Mode automatique, redirige vers la page en cours
  10. * @param string $page -> Page ŕ rediriger
  11. * @param int $sleep -> Temps en seconde ŕ attendre avec d'exécuter la redirection
  12. */
  13. public static function redirection($auto = true, $page = null, $sleep = null){
  14. $host = $_SERVER['HTTP_HOST'];
  15. $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
  16. if($auto){
  17. $page = basename($_SERVER['PHP_SELF']);
  18. }
  19. // Redirection
  20. if($sleep != null){
  21. header("Refresh: $sleep; URL=http://$host$uri/$page");
  22. }else{
  23. header("Location: http://$host$uri/$page");
  24. }
  25. exit;
  26. }
  27. /**
  28. * Remplace une url texte en url cliquable
  29. *
  30. * @param string $str -> La chaine de caractčres contenant une ou plusieurs url
  31. * @param bool $bbcode -> Convertit en HTML par defaut, true pour le BBcode
  32. * @return la chaine de caractčres avec les url remplacées
  33. */
  34. public static function replaceTextURL($str, $bbcode = false){
  35. $regex = '$(?:https?|ftp)://(?:www\.|ssl\.)?[a-z0-9._%-]+(?:/[a-z0-9._/%-]*(?:\?[a-z0-9._/%-]+=[a-z0-9._/%+-]+(?:&(?:amp;)?[a-z0-9._/%-]+=[a-z0-9._/%+-]+)*)?)?(?:#[a-z0-9._-]*)?$i';
  36. if($bbcode){ $code = '[url]$0[/url]'; }else{ $code = '<a href="$0">$0</a>'; }
  37. return preg_replace($regex, $code, $str);
  38. }
  39. /**
  40. * Vérifie si l'adresse email est dans un format valide
  41. *
  42. * @param str $email -> L'adresse email ŕ tester
  43. * @return true si adresse valide sinon false
  44. */
  45. public static function isValidEmail($email){
  46. if($email != null){
  47. $valid_email = '#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
  48. if( preg_match($valid_email, $email) ){
  49. return true;
  50. }else{
  51. return false;
  52. }
  53. }
  54. }
  55. /**
  56. * Vérifie si le numero de téléphone est dans un format valide
  57. *
  58. * @param str $tel -> Le numero de téléphone ŕ tester
  59. * @return true si numero valide sinon false
  60. */
  61. public static function isValidTel($tel){
  62. if($tel != null){
  63. $valid_tel = '#^0[0-9]([ .-]?[0-9]{2}){4}$#';
  64. if( preg_match($valid_tel, $tel) ){
  65. return true;
  66. }else{
  67. return false;
  68. }
  69. }
  70. }
  71. /**
  72. * Retourne l'image du Captcha
  73. *
  74. * @require showcaptcha.php dans un dossier "./includes/captcha/"
  75. */
  76. public static function showCaptcha(){
  77. // Chaine de caractčres pour créer le code
  78. $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
  79. $code = null;
  80. for($i = 0; $i < 4; $i++) {
  81. $code .= $chars[mt_rand(0, 35)];
  82. }
  83. // On stocke le code dans la session
  84. $_SESSION['captcha'] = $code;
  85. // On ferme la session pour forcer l'écriture immédiate
  86. session_write_close();
  87. return '<img src="./includes/captcha/showcaptcha.php" height="40" width="145" alt="Impossible d\'afficher le code !" />';
  88. }
  89. /**
  90. * Lis les données d'un cookie
  91. *
  92. * @param string $cookie_name -> Le nom du cookie
  93. * @param int $data_pos -> La position de la donnée ŕ retourner, null pour toutes les données
  94. * @return string si une position est choisie, sinon return array de toutes les données
  95. */
  96. public static function readCookieData($cookie_name, $data_pos = null){
  97. $separator = '|';
  98. // Lecture
  99. if( isset($_COOKIE[$cookie_name]) ){
  100. $out = explode($separator, $_COOKIE[$cookie_name]);
  101. // Si une position est choisie
  102. if( is_numeric($data_pos) ){
  103. if($out[$data_pos] != null){
  104. return $out[$data_pos];
  105. }
  106. }
  107. // Sinon toutes les valeurs
  108. else{
  109. if($out[0] != null){
  110. return $out;
  111. }
  112. }
  113. }else{
  114. return null;
  115. }
  116. }
  117. /**
  118. * Ajoute des données dans un cookie
  119. *
  120. * @param string $cookie_name -> Le nom du cookie
  121. * @param array $data -> Les données du cookie
  122. * @param int $cookie_expire -> Le nombre de jours avant que le cookie expire
  123. * @return true si l'écriture du cookie ŕ réussi, sinon false
  124. */
  125. public static function addCookieData($cookie_name, $data, $cookie_expire = 15){
  126. $separator = '|';
  127. // Liste des données
  128. $newCookieData = null;
  129. for($i = 0; $i < count($data); $i++){
  130. if($i == count($data)-1){
  131. $newCookieData .= $data[$i];
  132. }else{
  133. $newCookieData .= $data[$i].$separator;
  134. }
  135. }
  136. // On écrit le cookie
  137. if( setcookie($cookie_name, $newCookieData, time()+60*60*24*$cookie_expire, '/') ){
  138. return true;
  139. }else{
  140. return false;
  141. }
  142. }
  143. /**
  144. * Récupčre la langue du navigateur
  145. *
  146. * @param string $forceLang -> Forcer l'utilisation du langue
  147. * @return $_SESSION['lang']
  148. */
  149. public static function getLang($forceLang = null){
  150. // Si on choisi une langue
  151. if($forceLang){
  152. $_SESSION['lang'] = $forceLang;
  153. }
  154. else{
  155. if( !isset($_SESSION['lang']) ){
  156. // On récupčre la langue du navigateur
  157. $_SESSION['lang'] = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
  158. }
  159. }
  160. return $_SESSION['lang'];
  161. }
  162. /**
  163. * Retourne la valeur du terme
  164. *
  165. * @param array $args -> Arugments dans la clé. Ex: t('key word n°!numero', array('!numero' => $numero) );
  166. */
  167. public static function t($key, $args = array() ){
  168. global $translate;
  169. $out = $key;
  170. if( isset($_SESSION['lang']) ){
  171. if($_SESSION['lang'] !== 'en'){
  172. if( isset($translate[$key]) ){
  173. $out = $translate[$key];
  174. }
  175. }
  176. }
  177. if( count($args) > 0 ){
  178. $out = str_replace( array_keys($args), array_values($args), $out);
  179. }
  180. return $out;
  181. }
  182. /**
  183. * Récupčre le navigateur internet du visiteur
  184. */
  185. public static function getBrowser(){
  186. $out = null;
  187. $http_user_agent = $_SERVER['HTTP_USER_AGENT'];
  188. if( strstr($http_user_agent, 'Firefox') ){ $out = 'Firefox'; }
  189. else if( strstr($http_user_agent, 'Chrome') ){ $out = 'Chrome'; }
  190. else if( strstr($http_user_agent, 'Opera') ){ $out = 'Opera'; }
  191. else if( strstr($http_user_agent, 'MSIE') ){ $out = 'IE'; }
  192. else if( strstr($http_user_agent, 'Safari') ){ $out = 'Safari'; }
  193. else if( strstr($http_user_agent, 'Konqueror') ){ $out = 'Konqueror'; }
  194. else if( strstr($http_user_agent, 'Netscape') ){ $out = 'Netscape'; }
  195. else{ $out = 'Others'; }
  196. return $out;
  197. }
  198. /**
  199. * Récupčre le systčme d'exploitation du visiteur
  200. */
  201. public static function getOperatingSystem(){
  202. $out = null;
  203. $http_user_agent = $_SERVER['HTTP_USER_AGENT'];
  204. if( strstr($http_user_agent, 'Win') ){ $out = 'Windows'; }
  205. else if( (strstr($http_user_agent, 'Mac')) || (strstr('PPC', $http_user_agent)) ){ $out = 'Mac'; }
  206. else if( strstr($http_user_agent, 'Linux') ){ $out = 'Linux'; }
  207. else if( strstr($http_user_agent, 'FreeBSD') ){ $out = 'FreeBSD'; }
  208. else if( strstr($http_user_agent, 'SunOS') ){ $out = 'SunOS'; }
  209. else if( strstr($http_user_agent, 'IRIX') ){ $out = 'IRIX'; }
  210. else if( strstr($http_user_agent, 'BeOS') ){ $out = 'BeOS'; }
  211. else if( strstr($http_user_agent, 'OS/2') ){ $out = 'OS/2'; }
  212. else if( strstr($http_user_agent, 'AIX') ){ $out = 'AIX'; }
  213. else{ $out = 'Others'; }
  214. return $out;
  215. }
  216. /**
  217. * Détermine si l'adresse ip du visiteur est dans le réseau local
  218. *
  219. * @param string $addr -> L'adresse IP ŕ utiliser
  220. * @return bool
  221. */
  222. public static function isLocalhostIP($addr = null){
  223. $out = false;
  224. // On récupčre l'adresse IP du serveur, et on liste les 3 premičres valeurs
  225. $server_ip_list = explode('.', $_SERVER['SERVER_ADDR']);
  226. $server_ip_substr = $server_ip_list[0].'.'.$server_ip_list[1].'.'.$server_ip_list[2];
  227. // De męme pour l'utilisateur
  228. if($addr){
  229. $user_ip_list = explode('.', $addr);
  230. }else{
  231. $user_ip_list = explode('.', $_SERVER['REMOTE_ADDR']);
  232. }
  233. $user_ip_substr = $user_ip_list[0].'.'.$user_ip_list[1].'.'.$user_ip_list[2];
  234. // Si les valeurs sont identiques -> on est dans le réseau local
  235. if($user_ip_substr === $server_ip_substr){
  236. $out = true;
  237. }
  238. return $out;
  239. }
  240. }
  241. ?>