From 497945d083fad4f94090c72e6cd35e980e9cda66 Mon Sep 17 00:00:00 2001 From: ielmin Date: Thu, 11 Jul 2013 17:40:04 +1000 Subject: [PATCH] odified is_mobile to cache previously detection result because device type will not change during session. it makes sure the result whether device is mobile or not is checked only once during session, redusing extra overkill --- code/MobileBrowserDetector.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/code/MobileBrowserDetector.php b/code/MobileBrowserDetector.php index 6dc1501..1df5ee2 100644 --- a/code/MobileBrowserDetector.php +++ b/code/MobileBrowserDetector.php @@ -62,9 +62,14 @@ public static function is_win_phone() { * @return bool */ public static function is_mobile($agent = null) { + //return true; $isMobile = false; + if (isset($_GET['flush'])) + Session::clear('isMobile'); //makes sure session cache is cleared when flush is requested + $isMobile=Session::get('isMobile'); + if (!$isMobile&&$isMobile!==0){ if(!$agent) $agent = $_SERVER['HTTP_USER_AGENT']; - $accept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : ''; + $accept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : ''; switch(true) { case(self::is_iphone()): @@ -101,11 +106,14 @@ public static function is_mobile($agent = null) { $isMobile = true; break; } - + if (!$isMobile) $isMobile=0; + Session::set('isMobile', $isMobile); + } if(!headers_sent()) { header('Cache-Control: no-transform'); header('Vary: User-Agent, Accept'); } + return $isMobile; }