--- /dev/null
+<?php
+
+/**
+ * Mobile Detect
+ *
+ * @license http://www.opensource.org/licenses/mit-license.php The MIT License
+ * @version SVN: $Id: Mobile_Detect.php 3 2009-05-21 13:06:28Z vic.stanciu $
+ */
+
+/**
+ * MODIFIED FOR THE JAPPIX PROJECT
+ * Last revision: 20/11/10
+ *
+ * Thanks to LinkMauve for his patch!
+ */
+
+class Mobile_Detect {
+
+ protected $accept;
+ protected $userAgent;
+
+ protected $isMobile = false;
+ protected $isAndroid = null;
+ protected $isIphone = null;
+ protected $isBlackberry = null;
+ protected $isOpera = null;
+ protected $isPalm = null;
+ protected $isWindows = null;
+ protected $isGeneric = null;
+
+ protected $devices = array(
+ "android" => "android",
+ "blackberry" => "blackberry",
+ "iphone" => "(iphone|ipod)",
+ "opera" => "opera mini",
+ "palm" => "(avantgo|blazer|elaine|hiptop|palm|plucker|xiino)",
+ "windows" => "windows ce; (iemobile|ppc|smartphone)",
+ "generic" => "(kindle|mobile|mmp|midp|o2|pda|pocket|psp|symbian|smartphone|treo|up.browser|up.link|vodafone|wap)"
+ );
+
+
+ public function __construct() {
+ $this->userAgent = $_SERVER['HTTP_USER_AGENT'];
+
+ if (isset($_SERVER['HTTP_ACCEPT']))
+ $this->accept = $_SERVER['HTTP_ACCEPT'];
+ else
+ $this->accept = '';
+
+ if (isset($_SERVER['HTTP_X_WAP_PROFILE'])|| isset($_SERVER['HTTP_PROFILE'])) {
+ $this->isMobile = true;
+ } elseif (strpos($this->accept,'text/vnd.wap.wml') > 0 || strpos($this->accept,'application/vnd.wap.xhtml+xml') > 0) {
+ $this->isMobile = true;
+ } else {
+ foreach ($this->devices as $device => $regexp) {
+ if ($this->isDevice($device)) {
+ $this->isMobile = true;
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Overloads isAndroid() | isBlackberry() | isOpera() | isPalm() | isWindows() | isGeneric() through isDevice()
+ *
+ * @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 not defined", E_USER_ERROR);
+ }
+ }
+
+
+ /**
+ * Returns true if any type of mobile device detected, including special ones
+ * @return bool
+ */
+ public function isMobile() {
+ return $this->isMobile;
+ }
+
+
+ protected function isDevice($device) {
+ $var = "is" . ucfirst($device);
+ $return = $this->$var === null ? (bool) preg_match("/" . $this->devices[$device] . "/i", $this->userAgent) : $this->$var;
+
+ if ($device != 'generic' && $return == true) {
+ $this->isGeneric = false;
+ }
+
+ return $return;
+ }
+}