Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Detect mobile devices
- *
- * @category Sitebase (Wim Mostmans)
- * @version 1.0
- */
- class MobileDetect {
- // Device constants
- const DEVICE_ANDROID = "android";
- const DEVICE_BLACKBERRY = "blackberry";
- const DEVICE_IPHONE = "iphone";
- const DEVICE_OPERA = "opera";
- const DEVICE_PALM = "palm";
- const DEVICE_WINDOWS = "windows";
- const DEVICE_GENERIC = "generic";
- const DEVICE_IPAD = "ipad";
- const DEVICE_NORMAL = "normal";
- /**
- * Hold the device useragent
- *
- * @var string
- */
- private $_useragent;
- /**
- * Boolean that is set to true if
- * the current device is mobile
- *
- * @var bool
- */
- private $_isMobile = false;
- /**
- * Device booleans that get set when
- * the devices matches
- *
- * @var bool
- */
- private $_isAndroid = null;
- private $_isBlackberry = null;
- private $_isIphone = null;
- private $_isOpera = null;
- private $_isPalm = null;
- private $_isWindows = null;
- private $_isGeneric = null;
- private $_isIpad = null;
- /**
- * Regular expressions for the different devices
- *
- * @var array
- */
- private $_devices = array(
- "android" => "android",
- "blackberry" => "blackberry",
- "iphone" => "(iphone|ipod)",
- "opera" => "opera mini",
- "palm" => "(avantgo|blazer|elaine|hiptop|palm|plucker|xiino)",
- "windows" => "(iemobile|ppc|smartphone|windows phone)",
- "generic" => "(kindle|mobile|mmp|midp|o2|pda|pocket|psp|symbian|smartphone|treo|up.browser|up.link|vodafone|wap)",
- "ipad" => "ipad"
- );
- /**
- * Constructor
- *
- * @access public
- * @return void
- */
- public function __construct() {
- $this->_useragent = $_SERVER['HTTP_USER_AGENT'];
- foreach ($this->_devices as $device => $regexp) {
- if ($this->IsDevice($device) && $this->_isMobile == FALSE) {
- $this->_isMobile = true;
- }
- }
- }
- /**
- * Check if surfing with a particular device
- *
- * @access private
- * @param string $device
- * @return bool
- */
- private function IsDevice($device) {
- $var = "Is" . ucfirst($device);
- $return = @$this->$var === null ? (bool) preg_match("/" . $this->_devices[strtolower($device)] . "/i", $this->_useragent) : $this->$var;
- if ($device != 'generic' && $return == true) {
- $this->_isGeneric = false;
- }
- return $return;
- }
- /**
- * Get the device type
- *
- * @param public
- * @return string
- */
- public function GetDevice(){
- foreach($this->_devices as $device_string => $regex){
- if( $this->IsDevice($device_string) ){
- return $device_string;
- }
- }
- return self::DEVICE_NORMAL;
- }
- /**
- * Call methods like this IsMobile() | IsAndroid() | IsIphone() | IsBlackberry() | IsOpera() | IsPalm() | IsWindows() | IsGeneric() | IsIpad() through IsDevice()
- *
- * @access public
- * @param string $name
- * @param array $arguments
- * @return bool
- */
- public function __call($name, $arguments) {
- $device = substr($name, 2);
- if ($name == "Is" . ucfirst($device)) {
- return $this->IsDevice($device);
- } else {
- trigger_error("Method $name is not defined", E_USER_ERROR);
- }
- }
- /**
- * Returns true if surfing on a mobile device
- *
- * @access public
- * @return bool
- */
- public function IsMobile() {
- return $this->_isMobile;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement