. if (!defined('EG')) die('Direct access not allowed!'); function translate($string) { return Hardware::translate($string); } class Hardware { public static $translations = array( "amd64" => 'x86-64/amd64', "PC-Card" => 'PCMCIA/PC-Card', "works_with_3D" => "works with 3D acceleration", "works_without_3D" => "works, but without 3D acceleration", "does_not_work" => "it does not work", ); public static $regExpressions = array( "kernel" => "/^[a-zA-Z0-9\-\_\.\+\s\(\)\,]+$/", "driver" => "/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/", "vendorid_productid" => "/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/", "model" => "/^[a-zA-Z0-9\-\_\.\+\s\(\)\@\[\]\/]+$/", ); public static function translate($string) { if (array_key_exists($string,self::$translations)) { return self::$translations[$string]; } return $string; } //classId => controller public static $deviceClasses = array( '0403' => 'soundcards', '0280' => 'wifi', '0300' => 'videocards', '0200' => 'ethernetcards', '0400' => 'acquisitioncards', '0401' => 'acquisitioncards', '0480' => 'acquisitioncards', '0805' => 'sdcardreaders', ); public static $icons = array( 'notebook' => 'H2O/computer-laptop_22.png', 'wifi' => 'H2O/network-wireless_22.png', 'videocard' => 'Crystal/1282042976_hardware.png', 'printer' => 'H2O/printer_22.png', 'scanner' => 'H2O/scanner_22.png', '3G-card' => 'Crystal/usb_22.png', 'soundcard' => 'H2O/audio-card_22.png', 'webcam' => 'H2O/camera-web_22.png', 'bluetooth' => 'H2O/preferences-system-bluetooth-22.png', 'acquisition-card' => 'Crystal/cam_mount-22.png', 'fingerprint-reader' => 'fingerprint_icon-22.png', 'ethernet-card' => 'H2O/network-wired_22.png', 'sd-card-reader' => 'H2O/media-flash-sd-mmc_22.png', 'modem' => 'Crystal/modem_22.png', 'RAID-adapter' => 'Crystal/modem_22.png', ); public static $typeToController = array( 'notebook' => 'notebooks', 'wifi' => 'wifi', 'videocard' => 'videocards', 'printer' => 'printers', 'scanner' => 'scanners', '3G-card' => 'threegcards', 'soundcard' => 'soundcards', 'webcam' => 'webcams', 'bluetooth' => 'bluetooth', 'acquisition-card' => 'acquisitioncards', 'fingerprint-reader' => 'fingerprintreaders', 'ethernet-card' => 'ethernetcards', 'sd-card-reader' => 'sdcardreaders', 'modem' => 'modems', 'RAID-adapter' => 'raidadapters', ); public static function getTypes() { return implode(',',array_keys(self::$typeToController)); } public static function getControllerFromType($type) { if (array_key_exists($type,self::$typeToController)) { return self::$typeToController[$type]; } return null; } //get the type from the controller public static function getTypeFromController($controller) { $temp = array_flip(self::$typeToController); if (array_key_exists($controller,$temp)) { return $temp[$controller]; } return null; } public static function getTypeFromClass($class) { if (array_key_exists($class,self::$deviceClasses)) { return self::getTypeFromController(self::$deviceClasses[$class]); } return null; } public static function getIconFromType($type) { if (array_key_exists($type,self::$icons)) { return "http://".DOMAIN_NAME."/Public/Img/".self::$icons[$type]; } return null; } public static function getIconFromController($controller) { if ($type = self::getTypeFromController($controller)) { return self::getIconFromType($type); } return null; } public static function getIconFromClass($class) { if (array_key_exists($class,self::$deviceClasses)) { return self::getIconFromController(self::$deviceClasses[$class]); } return null; } //get the list of the allowed years of commercialization public static function getCommYears() { $currentYear = (int)date("Y"); $allowed = 'not-specified'; for ($i=$currentYear;$i>1991;$i--) { $allowed .= ",$i"; } return $allowed; } public static $trackSelect = 'not-specified,no,yes'; } class Printer extends Hardware { public static $compatibility = array( "A-Full" => "A-Full", "B-Partial" => "B-Partial", "C-None" => "C-None", ); public static $interface = "not-specified,USB,Serial,Parallel,Firewire,SCSI,Ethernet"; public static $subtype = "not-specified,laser,inkjet,other"; public static function compatibilityList() { return implode(',',array_values(self::$compatibility)); } } class Wifi extends Hardware { public static $interface = array( "not-specified" => "not-specified", "USB" => "USB", "PCI" => "PCI", "PCI-E" => "PCI-E", "mini-PCI" => "mini-PCI", "mini-PCI-E" => "mini-PCI-E", "ExpressCard" => "ExpressCard", "Ethernet" => "Ethernet", "PCMCIA/PC-Card" => "PC-Card", ); public static $interfaceReverse = array( "not-specified" => "not-specified", "USB" => "USB", "PCI" => "PCI", "PCI-E" => "PCI-E", "mini-PCI" => "mini-PCI", "mini-PCI-E" => "mini-PCI-E", "ExpressCard" => "ExpressCard", "Ethernet" => "Ethernet", "PC-Card" => "PCMCIA/PC-Card", ); public static $wifiSelect = 'yes,no'; public static function interfaceList() { return implode(',',array_values(self::$interface)); } } class Videocard extends Hardware { public static $videoSelect = array( "works with 3D acceleration" => "works_with_3D", "works, but without 3D acceleration" => "works_without_3D", "it does not work" => "does_not_work", ); public static $videoReverse = array( "works_with_3D" => "works with 3D acceleration", "works_without_3D" => "works, but without 3D acceleration", "does_not_work" => "it does not work", ); public static $interface = "not-specified,PCI,AGP,PCI-E,ISA,MCA,VLB"; public static function videoList() { return implode(',',array_values(self::$videoSelect)); } } class Notebooks extends Hardware { public static $vendors = array( "Acer" => "Acer", "Apple" => "Apple", "Asus" => "Asus", "CLEVO CO." => "CLEVO-CO", "Compal Electronics" => "Compal-Electronics", "COMPAQ" => "COMPAQ", "Dell" => "Dell", "emachines" => "emachines", "FUJITSU" => "FUJITSU", "Garlach44" => "Garlach44", "Gateway" => "Gateway", "Hewlett Packard" => "Hewlett-Packard", "IBM" => "IBM", "Lanix" => "Lanix", "Lemote" => "Lemote", "Lenovo" => "Lenovo", "LG" => "LG", "msi" => "msi", "One Laptop per Child (Non-Profit)" => "One-Laptop-per-Child-Non-Profit", "Philco" => "Philco", "Philips" => "Philips", "Panasonic" => "Panasonic", "Sony" => "Sony", "SAMSUNG" => "SAMSUNG", "Thomson" => "Thomson", "TOSHIBA" => "TOSHIBA", "ZaReason, Inc" => "ZaReason-Inc", ); public static $compatibility = array( "A Platinum" => "A-platinum", "B Gold" => "B-gold", "C Silver" => "C-silver", "D Bronze" => "D-bronze", "E Garbage" => "E-garbage" ); public static $subtypeSelect = 'notebook,netbook,tablet,not-specified'; public static $architectureSelect = array( "not specified" => 'not-specified', "x86" => 'x86', "x86-64/amd64" => 'amd64', "MIPS" => 'MIPS', "ARM" => 'ARM', ); public static $biosSelect = 'not-specified,no,yes'; public static $installableSelect = 'not-specified,no,yes'; public static $videoSelect = array( "not specified" => 'not-specified', "yes, with 3D acceleration" => "yes_with_3D", "yes, but without 3D acceleration" => "yes_without_3D", "it does not work" => "no", ); public static $videoReverse = array( "yes_with_3D" => "works with 3D acceleration", "yes_without_3D" => "works but without 3D acceleration", "no" => "it does not work", 'not-specified' => "not specified how it works", "" => "" ); public static $wifiSelect = array( "not specified" => 'not-specified', 'yes' => 'yes', 'no' => 'no', 'there is no wifi card' => 'no-wifi-card', ); public static $wifiReverse = array( "yes" => "it works", "no" => "it does not work", 'not-specified' => "not specified how it works", 'no-wifi-card' => 'there is no wifi card', "" => "" ); public static $webcamSelect = array( 'not specified' => 'not-specified', 'it works' => 'yes', 'it does not work' => 'no', 'there is no webcam' => 'there-is-no-webcam', ); public static $webcamReverse = array( "yes" => "it works", "no" => "it does not work", 'not-specified' => "not specified how it works", 'there-is-no-webcam' => 'there is no webcam', ); public static function videoList() { return implode(',',array_values(self::$videoSelect)); } public static function wifiList() { return implode(',',array_values(self::$wifiSelect)); } public static function webcamList() { return implode(',',array_values(self::$webcamSelect)); } public static function vendorsList() { return implode(',',array_values(self::$vendors)); } public static function compatibilityList() { return implode(',',array_values(self::$compatibility)); } public static function architectureList() { return implode(',',array_values(self::$architectureSelect)); } } class ThreeGcards extends Wifi { public static $select = 'yes,no'; } class Soundcards extends Hardware { public static $audioSelect = 'yes,no'; public static $interface = "not-specified,PCI,ISA,USB,Firewire,Parallel,PCI-E,PCMCIA"; } class Webcams extends Hardware { public static $select = 'yes,no'; public static $interface = "not-specified,USB,Firewire,Parallel,Wifi,Serial"; } class Bluetooth extends Hardware { public static $select = 'yes,no'; public static $interface = "not-specified,USB,PCI,PCI-E,mini-PCI,mini-PCI-E,ExpressCard,PC-Card"; } class Acquisitioncards extends Hardware { public static $select = 'yes,no'; public static $interface = "not-specified,USB,PCI,PCI-E,mini-PCI,mini-PCI-E,ExpressCard,PC-Card,Firewire,Parallel,Serial"; } class Fingerprintreaders extends Acquisitioncards { } class Ethernetcards extends Hardware { } class Sdcardreaders extends Acquisitioncards { } class Modems extends Acquisitioncards { } class Raidadapters extends Acquisitioncards { }