diff options
author | Yuchen Pei <hi@ypei.me> | 2021-10-15 09:52:00 +1100 |
---|---|---|
committer | Yuchen Pei <hi@ypei.me> | 2021-10-15 09:52:00 +1100 |
commit | 71b0e901f5fb1cfcd162d8acc23120d3f77a3152 (patch) | |
tree | 323c00faef1edc7dea2e88ff581cc2258b2b6432 /Application/Include/hardware.php | |
parent | 72cce24864b064b5762f4fe97fdf40d8d2ad4b51 (diff) | |
parent | 07f5140771388c9e0c8a99b0dd2e5d950bdb173b (diff) |
Merge branch 'development' into h-node
Diffstat (limited to 'Application/Include/hardware.php')
-rw-r--r-- | Application/Include/hardware.php | 576 |
1 files changed, 576 insertions, 0 deletions
diff --git a/Application/Include/hardware.php b/Application/Include/hardware.php new file mode 100644 index 0000000..bd83987 --- /dev/null +++ b/Application/Include/hardware.php @@ -0,0 +1,576 @@ +<?php + +// h-source, a web software to build a community of people that want to share their hardware information. +// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt) +// +// This file is part of h-source +// +// h-source is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// h-source is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with h-source. If not, see <http://www.gnu.org/licenses/>. + +if (!defined('EG')) die('Direct access not allowed!'); + + +function translate($string) +{ + return Hardware::translate($string); +} + +function translate_and_gtext($string) +{ + return gtext(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", + "can-be-installed" => "can be installed", + "pcmcia-controller" => "PCMCIA Controller", + "usb-controller" => "USB Controller", + "firewire-controller" => "Firewire Controller", + "heci-controller" => "HECI Controller", + ); + + 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', + '0703' => 'modems', + '0104' => 'raidadapters', + '0c00' => 'hostcontrollers', + '0c03' => 'hostcontrollers', + '0780' => 'hostcontrollers', + '0607' => 'hostcontrollers', + '0e00' => 'raidadapters', + ); + + 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/1282042976_hardware.png', + 'host-controller' => 'Crystal/1282042976_hardware.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', + 'host-controller' => 'hostcontrollers', + ); + + public static $typeToWorksField = array( + 'notebook' => 'compatibility', + 'wifi' => 'wifi_works', + 'videocard' => 'video_card_works', + 'printer' => 'compatibility', + 'scanner' => 'compatibility', + '3G-card' => 'wifi_works', + 'soundcard' => 'sound_card_works', + 'webcam' => 'webcam_works', + 'bluetooth' => 'bluetooth_works', + 'acquisition-card' => 'compatibility', + 'fingerprint-reader' => 'fingerprint_works', + 'ethernet-card' => 'ethernet_card_works', + 'sd-card-reader' => 'sd_card_works', + 'modem' => 'compatibility', + 'RAID-adapter' => 'compatibility', + 'host-controller' => 'compatibility', + ); + + 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; + } + + public static function getWorksFieldFromType($type) + { + if (array_key_exists($type,self::$typeToWorksField)) + { + return self::$typeToWorksField[$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 Url::getRoot()."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", + "BenQ" => "BenQ", + "Blue Light" => "Blue-Light", + "CLEVO CO." => "CLEVO-CO", + "Compal Electronics" => "Compal-Electronics", + "COMPAQ" => "COMPAQ", + "Dell" => "Dell", + "emachines" => "emachines", + "FUJITSU" => "FUJITSU", + "Garlach44" => "Garlach44", + "Gateway" => "Gateway", + "Google" => "Google", + "Hasee" => "Hasee", + "Hewlett Packard" => "Hewlett-Packard", + "IBM" => "IBM", + "Intel" => "Intel", + "Lanix" => "Lanix", + "Lemote" => "Lemote", + "Lenovo" => "Lenovo", + "LG" => "LG", + "Libiquity" => "Libiquity", + "Minifree" => "Minifree", + "msi" => "msi", + "Olimex" => "Olimex", + "One Laptop per Child (Non-Profit)" => "One-Laptop-per-Child-Non-Profit", + "Openpandora Ltd." => "Openpandora-Ltd", + "Oracle" => "Oracle", + "Packard Bell" => "Packard-Bell", + "Panasonic" => "Panasonic", + "Philco" => "Philco", + "Philips" => "Philips", + "Positivo" => "Positivo", + "Purism" => "Purism", + "Qbex" => "Qbex", + "SAMSUNG" => "SAMSUNG", + "Slimbook" => "Slimbook", + "Sony" => "Sony", + "System76" => "System76", + "ThinkPenguin" => "ThinkPenguin", + "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 = array( + "not specified" => 'not-specified', + "no" => 'no', + "yes" => 'yes', + "can be installed" => 'can-be-installed', + ); + + public static $preventWifiSelect = array( + "not specified" => 'not-specified', + "no" => 'no', + "yes (please specify in the description entry)" => 'yes', + ); + + public static $installableSelect = array( + "not specified" => 'not-specified', + "no (please specify in the description entry)" => 'no', + "yes" => '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)); + } + + public static function biosList() + { + return implode(',',array_values(self::$biosSelect)); + } + + public static function preventWifiList() + { + return implode(',',array_values(self::$preventWifiSelect)); + } + + public static function installableList() + { + return implode(',',array_values(self::$installableSelect)); + } +} + +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 Acquisitioncards +{ + +} + +class Sdcardreaders extends Acquisitioncards +{ + +} + +class Modems extends Acquisitioncards +{ + +} + +class Raidadapters extends Acquisitioncards +{ + +} + +class PCMCIAControllers extends Acquisitioncards +{ + +} + +class Hostcontrollers extends Acquisitioncards +{ + + public static $subtype = array( + "PCMCIA Controller" => "pcmcia-controller", + "USB Controller" => "usb-controller", + "Firewire Controller" => "firewire-controller", + "HECI Controller" => "heci-controller", + ); + + public static function subtypeList() + { + return implode(',',array_values(self::$subtype)); + } + +} |