/** * Filter the parsed result to the schema. * * @param \Detection\MobileDetect $parsed * @return array */ public function filter($parsed) { $filtered = array(); // Filtering mechanishm for MobileDetect 2.* versions. $filter = function ($items) use($parsed) { // Play down the $parsed->is('Android'); mechanishm. foreach ($items as $key => $regex) { if ($parsed->is($key)) { return $key; } } return null; }; // Operating system's family. $filtered['osFamily'] = $filter($parsed->getOperatingSystems()); // Browser's family. $filtered['browserFamily'] = $filter($parsed->getBrowsers()); // Just 'mobile' kind devices. if ($parsed->isMobile() and !$parsed->isTablet()) { $filtered['isMobile'] = true; $filtered['mobileGrade'] = $parsed->mobileGrade(); $filtered['deviceModel'] = $filter($parsed->getPhoneDevices()); } elseif ($parsed->isTablet()) { $filtered['isTablet'] = true; $filtered['mobileGrade'] = $parsed->mobileGrade(); $filtered['deviceModel'] = $filter($parsed->getTabletDevices()); } // Clear the generic and null values. $filtered = array_filter(array_filter($filtered, function ($value) { return !preg_match('%^generic%i', $value); })); return $filtered; }