Using.php 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace WhichBrowser\Analyser\Header\Useragent;
  3. use WhichBrowser\Model\Version;
  4. trait Using
  5. {
  6. private function &detectUsing($ua)
  7. {
  8. if (!preg_match('/(AdobeAIR|Awesomium|Embedded|bsalsa|Canvace|Ekioh|AtomShell|Electron|JavaFX|GFXe|luakit|Titanium|OpenWebKitSharp|Prism|Qt|Reqwireless|RhoSimulator|UWebKit|nw-tests|WebKit2)/ui', $ua)) {
  9. return $this;
  10. }
  11. $items = [
  12. [ 'name' => 'AdobeAIR', 'regexp' => '/AdobeAIR\/([0-9.]*)/u' ],
  13. [ 'name' => 'Awesomium', 'regexp' => '/Awesomium\/([0-9.]*)/u' ],
  14. [ 'name' => 'Delphi Embedded Web Browser', 'regexp' => '/EmbeddedWB ([0-9.]*)/u' ],
  15. [ 'name' => 'Delphi Embedded Web Browser', 'regexp' => '/bsalsa\.com/u' ],
  16. [ 'name' => 'Delphi Embedded Web Browser', 'regexp' => '/Embedded Web Browser/u' ],
  17. [ 'name' => 'Canvace', 'regexp' => '/Canvace Standalone\/([0-9.]*)/u' ],
  18. [ 'name' => 'Ekioh', 'regexp' => '/Ekioh\/([0-9.]*)/u' ],
  19. [ 'name' => 'Electron', 'regexp' => '/AtomShell\/([0-9.]*)/u' ],
  20. [ 'name' => 'Electron', 'regexp' => '/Electron\/([0-9.]*)/u' ],
  21. [ 'name' => 'JavaFX', 'regexp' => '/JavaFX\/([0-9.]*)/u' ],
  22. [ 'name' => 'GFXe', 'regexp' => '/GFXe\/([0-9.]*)/u' ],
  23. [ 'name' => 'LuaKit', 'regexp' => '/luakit/u' ],
  24. [ 'name' => 'Titanium', 'regexp' => '/Titanium\/([0-9.]*)/u' ],
  25. [ 'name' => 'OpenWebKitSharp', 'regexp' => '/OpenWebKitSharp/u' ],
  26. [ 'name' => 'Prism', 'regexp' => '/Prism\/([0-9.]*)/u' ],
  27. [ 'name' => 'Qt', 'regexp' => '/Qt\/([0-9.]*)/u' ],
  28. [ 'name' => 'Qt', 'regexp' => '/QtWebEngine\/([4-9][0-9.]*)?/u' ],
  29. [ 'name' => 'Qt', 'regexp' => '/QtEmbedded/u' ],
  30. [ 'name' => 'Qt', 'regexp' => '/QtEmbedded.*Qt\/([0-9.]*)/u' ],
  31. [ 'name' => 'ReqwirelessWeb', 'regexp' => '/ReqwirelessWeb\/([0-9.]*)/u' ],
  32. [ 'name' => 'RhoSimulator', 'regexp' => '/RhoSimulator/u' ],
  33. [ 'name' => 'UWebKit', 'regexp' => '/UWebKit\/([0-9.]*)/u' ],
  34. [ 'name' => 'Node-WebKit', 'regexp' => '/nw-tests\/([0-9.]*)/u' ],
  35. [ 'name' => 'WebKit2.NET', 'regexp' => '/WebKit2.NET/u' ],
  36. ];
  37. $count = count($items);
  38. for ($i = 0; $i < $count; $i++) {
  39. if (preg_match($items[$i]['regexp'], $ua, $match)) {
  40. $this->data->browser->using = new \WhichBrowser\Model\Using([
  41. 'name' => $items[$i]['name']
  42. ]);
  43. if (isset($match[1]) && $match[1]) {
  44. $this->data->browser->using->version = new Version([ 'value' => $match[1], 'details' => isset($items[$i]['details']) ? $items[$i]['details'] : null ]);
  45. }
  46. break;
  47. }
  48. }
  49. return $this;
  50. }
  51. }