Helpers – Device – Detección de dispositivos
Libreria para detectar funcionalidades sobre el dispositivo que el usuario está usando.
/** * HelperDevice.php * @author Code Develium */ namespace Helpers; /** * Class HelperDevice */ abstract class HelpDevice { /** * Devuelve el sistema opeativo del cliente * @return string */ public static function getSO() { $userAgent = HelpString::toLower( HelpServer::getValue('HTTP_USER_AGENT') ); if (preg_match('/linux/i', $userAgent)) { $platform = 'Linux'; } elseif (preg_match('/macintosh|mac os x/i', $userAgent)) { $platform = 'Mac'; } elseif (preg_match('/windows|win32/i', $userAgent)) { $platform = 'Windows'; } else { $platform = 'Otro'; } return $platform; } /** * Función que devuelve el nombre del navegador utilizado por el * cliente * @return string */ public static function getNavegador() { $userAgent = HelpString::toLower( HelpServer::getValue('HTTP_USER_AGENT') ); if (strpos($userAgent, 'opera') || strpos($userAgent, 'opr/')){ return 'Opera'; } elseif (stripos($userAgent, 'edge') !== false) { return 'Edge'; } elseif (stripos($userAgent, 'chrome') !== false) { return 'Chrome'; } elseif (stripos($userAgent, 'safari') !== false) { return 'Safari'; } elseif (stripos($userAgent, 'firefox') !== false) { return 'Firefox'; } elseif (stripos($userAgent, 'msie') !== false || stripos($userAgent, 'trident/7') !== false) { return 'IE'; } elseif (stripos($userAgent, 'ipod') !== false) { return 'iPod'; } elseif (stripos($userAgent, 'iphone') !== false) { return 'iPhone'; } elseif (stripos($userAgent, 'ipad') !== false) { return 'iPad'; } elseif (stripos($userAgent, 'android') !== false) { return 'Android'; } elseif (stripos($userAgent, 'webos') !== false) { return 'WebOS'; } elseif (stripos($userAgent, 'blackberry') !== false) { return 'Blackberry'; } return 'Otro'; } /** * Devuelve la ip del cliente o null si no puede detectarla * * @return string */ public static function getIp() { foreach (array( 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR' ) as $key) { $value = HelpServer::getValue($key); if (!HelpValidate::isEmpty($value)) { foreach (explode(',', $value) as $ip) { $ip = trim($ip); if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) { return $ip; } } } } return null; } /** * Devuelve el idioma configurado en al dispositivo * HTTP_ACCEPT_LANGUAGE * * @param $idiomaDefault * * @return string */ public static function getIdiomaNavegador($idiomaDefault) { $httpAccept = HelpString::toLower( HelpServer::getValue('HTTP_ACCEPT_LANGUAGE') ); if (HelpValidate::isEmpty($httpAccept)) { return $idiomaDefault; } // dividir los posibles idiomas en un array $array_accept = explode(",", $httpAccept); $idiomas = []; foreach ($array_accept as $val) { // comprovar el valor q y crear un array asociativo. // Si no existe el valor q, es por defecto 1 if (preg_match( "/(.*);q=([0-1]{0,1}.\d{0,4})/i", $val, $matches)) { $idiomas[ $matches[ 1 ] ] = (float)$matches[ 2 ]; } else { $idiomas[ $val ] = 1.0; } } // Eel idioma por defecto el cual es el valor q más alto $qval = 0.0; foreach ($idiomas as $key => $value) { if ($value > $qval) { $qval = (float)$value; $idiomaDefault = $key; } } return HelpString::toLower($idiomaDefault); } }