version_check.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /* vim: set expandtab sw=4 ts=4 sts=4: */
  3. /**
  4. * A caching proxy for retrieving version information from phpmyadmin.net
  5. *
  6. * @package PhpMyAdmin
  7. */
  8. $_GET['ajax_request'] = 'true';
  9. // Sets up the session
  10. require_once 'libraries/common.inc.php';
  11. require_once 'libraries/Util.class.php';
  12. // Get response text from phpmyadmin.net or from the session
  13. // Update cache every 6 hours
  14. if (isset($_SESSION['cache']['version_check'])
  15. && time() < $_SESSION['cache']['version_check']['timestamp'] + 3600 * 6
  16. ) {
  17. $save = false;
  18. $response = $_SESSION['cache']['version_check']['response'];
  19. } else {
  20. $save = true;
  21. $file = 'https://www.phpmyadmin.net/home_page/version.json';
  22. if (function_exists('curl_init')) {
  23. $curl_handle = curl_init($file);
  24. curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
  25. $response = curl_exec($curl_handle);
  26. } else if (ini_get('allow_url_fopen')) {
  27. $response = file_get_contents($file);
  28. }
  29. }
  30. require_once 'libraries/common.inc.php';
  31. // Disabling standard response.
  32. PMA_Response::getInstance()->disable();
  33. // Always send the correct headers
  34. header('Content-type: application/json; charset=UTF-8');
  35. // Save and forward the response only if in valid format
  36. $data = json_decode($response);
  37. if (is_object($data)) {
  38. $latestCompatible = PMA_Util::getLatestCompatibleVersion(
  39. $data->releases
  40. );
  41. $version = '';
  42. $date = '';
  43. if ($latestCompatible != null) {
  44. $version = $latestCompatible['version'];
  45. $date = $latestCompatible['date'];
  46. }
  47. if ($save) {
  48. $_SESSION['cache']['version_check'] = array(
  49. 'response' => $response,
  50. 'timestamp' => time()
  51. );
  52. }
  53. echo json_encode(
  54. array(
  55. 'version' => (! empty($version) ? $version : ''),
  56. 'date' => (! empty($date) ? $date : ''),
  57. )
  58. );
  59. }
  60. ?>