protected function ensureDefaultRowsInTable($dataTable) { $requiredRows = array_fill(0, count(DeviceParserAbstract::getAvailableDeviceTypes()), Metrics::INDEX_NB_VISITS); $dataTables = array($dataTable); if (!$dataTable instanceof DataTable\Map) { foreach ($dataTables as $table) { if ($table->getRowsCount() == 0) { continue; } foreach ($requiredRows as $requiredRow => $key) { $row = $table->getRowFromLabel($requiredRow); if (empty($row)) { $table->addRowsFromSimpleArray(array(array('label' => $requiredRow, $key => 0))); } } } } }
public function showList() { Piwik::checkUserHasSomeAdminAccess(); $view = new View('@DevicesDetection/list'); $type = Common::getRequestVar('type', 'brands', 'string'); $list = array(); switch ($type) { case 'brands': $availableBrands = \DeviceDetector\Parser\Device\DeviceParserAbstract::$deviceBrands; foreach ($availableBrands as $short => $name) { if ($name != 'Unknown') { $list[$name] = getBrandLogo($name); } } break; case 'browsers': $availableBrowsers = \DeviceDetector\Parser\Client\Browser::getAvailableBrowsers(); foreach ($availableBrowsers as $short => $name) { $list[$name] = getBrowserLogo($short); } break; case 'browserfamilies': $availableBrowserFamilies = \DeviceDetector\Parser\Client\Browser::getAvailableBrowserFamilies(); foreach ($availableBrowserFamilies as $name => $browsers) { $list[$name] = getBrowserFamilyLogo($name); } break; case 'os': $availableOSs = \DeviceDetector\Parser\OperatingSystem::getAvailableOperatingSystems(); foreach ($availableOSs as $short => $name) { $list[$name] = getOsLogo($short); } break; case 'osfamilies': $osFamilies = \DeviceDetector\Parser\OperatingSystem::getAvailableOperatingSystemFamilies(); foreach ($osFamilies as $name => $oss) { $list[$name] = getOsFamilyLogo($name); } break; case 'devicetypes': $deviceTypes = \DeviceDetector\Parser\Device\DeviceParserAbstract::getAvailableDeviceTypes(); foreach ($deviceTypes as $name => $id) { $list[$name] = getDeviceTypeLogo($name); } break; } $view->itemList = $list; return $view->render(); }
public function __call($methodName, $arguments) { foreach (DeviceParserAbstract::getAvailableDeviceTypes() as $deviceName => $deviceType) { if (strtolower($methodName) == 'is' . strtolower(str_replace(' ', '', $deviceName))) { return $this->getDevice() == $deviceType; } } foreach (self::$clientTypes as $client) { if (strtolower($methodName) == 'is' . strtolower(str_replace(' ', '', $client))) { return $this->getClient('type') == $client; } } throw new \BadMethodCallException("Method {$methodName} not found"); }
function getDeviceTypeLogo($label) { if (is_numeric($label) && in_array($label, DeviceParser::getAvailableDeviceTypes())) { $label = array_search($label, DeviceParser::getAvailableDeviceTypes()); } $label = strtolower($label); $deviceTypeLogos = array("desktop" => "normal.gif", "smartphone" => "smartphone.png", "tablet" => "tablet.png", "tv" => "tv.png", "feature phone" => "mobile.gif", "console" => "console.gif", "car browser" => "carbrowser.png", "camera" => "camera.png"); if (!array_key_exists($label, $deviceTypeLogos)) { $label = 'unknown.gif'; } else { $label = $deviceTypeLogos[$label]; } $path = 'plugins/DevicesDetection/images/screens/' . $label; return $path; }
public function testGetAvailableDeviceTypes() { $available = DeviceParserAbstract::getAvailableDeviceTypes(); $this->assertGreaterThan(5, count($available)); $this->assertContains('desktop', array_keys($available)); }