PageRenderTime 53ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/core/Tracker/Settings.php

https://github.com/CodeYellowBV/piwik
PHP | 113 lines | 75 code | 12 blank | 26 comment | 1 complexity | 224a15e1335e023bd588e53812df6424 MD5 | raw file
Possible License(s): LGPL-3.0, JSON, MIT, GPL-3.0, LGPL-2.1, GPL-2.0, AGPL-1.0, BSD-2-Clause, BSD-3-Clause
  1. <?php
  2. /**
  3. * Piwik - free/libre analytics platform
  4. *
  5. * @link http://piwik.org
  6. * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  7. *
  8. */
  9. namespace Piwik\Tracker;
  10. use Piwik\CacheFile;
  11. use Piwik\Tracker;
  12. class Settings
  13. {
  14. function __construct(Request $request, $ip)
  15. {
  16. $this->request = $request;
  17. $this->ipAddress = $ip;
  18. $this->params = array();
  19. }
  20. function getInfo()
  21. {
  22. if(empty($this->params)) {
  23. $this->loadInfo();
  24. }
  25. return $this->params;
  26. }
  27. protected function loadInfo()
  28. {
  29. list($plugin_Flash, $plugin_Java, $plugin_Director, $plugin_Quicktime, $plugin_RealPlayer, $plugin_PDF,
  30. $plugin_WindowsMedia, $plugin_Gears, $plugin_Silverlight, $plugin_Cookie) = $this->request->getPlugins();
  31. $resolution = $this->request->getParam('res');
  32. $userAgent = $this->request->getUserAgent();
  33. $deviceDetector = new \DeviceDetector($userAgent);
  34. $deviceDetector->setCache(new CacheFile('tracker', 86400));
  35. $deviceDetector->parse();
  36. $aBrowserInfo = $deviceDetector->getBrowser();
  37. $browserName = !empty($aBrowserInfo['short_name']) ? $aBrowserInfo['short_name'] : 'UNK';
  38. $browserVersion = !empty($aBrowserInfo['version']) ? $aBrowserInfo['version'] : '';
  39. $os = $deviceDetector->getOS();
  40. $os = empty($os['short_name']) ? 'UNK' : $os['short_name'];
  41. $browserLang = substr($this->request->getBrowserLanguage(), 0, 20); // limit the length of this string to match db
  42. $configurationHash = $this->getConfigHash(
  43. $os,
  44. $browserName,
  45. $browserVersion,
  46. $plugin_Flash,
  47. $plugin_Java,
  48. $plugin_Director,
  49. $plugin_Quicktime,
  50. $plugin_RealPlayer,
  51. $plugin_PDF,
  52. $plugin_WindowsMedia,
  53. $plugin_Gears,
  54. $plugin_Silverlight,
  55. $plugin_Cookie,
  56. $this->ipAddress,
  57. $browserLang);
  58. $this->params = array(
  59. 'config_id' => $configurationHash,
  60. 'config_os' => $os,
  61. 'config_browser_name' => $browserName,
  62. 'config_browser_version' => $browserVersion,
  63. 'config_resolution' => $resolution,
  64. 'config_pdf' => $plugin_PDF,
  65. 'config_flash' => $plugin_Flash,
  66. 'config_java' => $plugin_Java,
  67. 'config_director' => $plugin_Director,
  68. 'config_quicktime' => $plugin_Quicktime,
  69. 'config_realplayer' => $plugin_RealPlayer,
  70. 'config_windowsmedia' => $plugin_WindowsMedia,
  71. 'config_gears' => $plugin_Gears,
  72. 'config_silverlight' => $plugin_Silverlight,
  73. 'config_cookie' => $plugin_Cookie,
  74. 'location_browser_lang' => $browserLang,
  75. );
  76. }
  77. /**
  78. * Returns a 64-bit hash of all the configuration settings
  79. * @param $os
  80. * @param $browserName
  81. * @param $browserVersion
  82. * @param $plugin_Flash
  83. * @param $plugin_Java
  84. * @param $plugin_Director
  85. * @param $plugin_Quicktime
  86. * @param $plugin_RealPlayer
  87. * @param $plugin_PDF
  88. * @param $plugin_WindowsMedia
  89. * @param $plugin_Gears
  90. * @param $plugin_Silverlight
  91. * @param $plugin_Cookie
  92. * @param $ip
  93. * @param $browserLang
  94. * @return string
  95. */
  96. protected function getConfigHash($os, $browserName, $browserVersion, $plugin_Flash, $plugin_Java, $plugin_Director, $plugin_Quicktime, $plugin_RealPlayer, $plugin_PDF, $plugin_WindowsMedia, $plugin_Gears, $plugin_Silverlight, $plugin_Cookie, $ip, $browserLang)
  97. {
  98. $hash = md5($os . $browserName . $browserVersion . $plugin_Flash . $plugin_Java . $plugin_Director . $plugin_Quicktime . $plugin_RealPlayer . $plugin_PDF . $plugin_WindowsMedia . $plugin_Gears . $plugin_Silverlight . $plugin_Cookie . $ip . $browserLang, $raw_output = true);
  99. return substr($hash, 0, Tracker::LENGTH_BINARY_ID);
  100. }
  101. }