PageRenderTime 36ms CodeModel.GetById 9ms RepoModel.GetById 0ms app.codeStats 0ms

/scalr-2/tags/scalr-2.0.0/app/www/server/grids/servers_list.php

http://scalr.googlecode.com/
PHP | 125 lines | 96 code | 27 blank | 2 comment | 15 complexity | 4c1423613a369fbc98537051f6553898 MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0, GPL-3.0
  1. <?php
  2. $response = array();
  3. // AJAX_REQUEST;
  4. $context = 6;
  5. try
  6. {
  7. $enable_json = true;
  8. include("../../src/prepend.inc.php");
  9. $sql = "SELECT * FROM servers WHERE 1=1";
  10. if ($_SESSION["uid"] != 0)
  11. $sql .= " AND client_id='{$_SESSION['uid']}'";
  12. if ($req_farmid)
  13. {
  14. $id = (int)$req_farmid;
  15. $sql .= " AND farm_id='{$id}'";
  16. }
  17. if ($req_farm_roleid)
  18. {
  19. $id = (int)$req_farm_roleid;
  20. $sql .= " AND farm_roleid='{$id}'";
  21. }
  22. if ($req_role_id)
  23. {
  24. $id = (int)$req_roleid;
  25. $sql .= " AND role_id='{$id}'";
  26. }
  27. if ($req_clientid)
  28. {
  29. $id = (int)$req_clientid;
  30. $sql .= " AND client_id='{$id}'";
  31. }
  32. if ($req_server_id)
  33. {
  34. $sql .= " AND server_id={$db->qstr($req_server_id)}";
  35. }
  36. if ($req_hide_terminated == 'true')
  37. $sql .= " AND status != '".SERVER_STATUS::TERMINATED."'";
  38. if ($req_query)
  39. {
  40. $filter = mysql_escape_string($req_query);
  41. foreach(array("server_id", "farm_id", "remote_ip", "local_ip", "status") as $field)
  42. {
  43. $likes[] = "$field LIKE '%{$filter}%'";
  44. }
  45. $sql .= !stristr($sql, "WHERE") ? " WHERE " : " AND (";
  46. $sql .= join(" OR ", $likes);
  47. $sql .= ")";
  48. }
  49. $sort = $req_sort ? mysql_escape_string($req_sort) : "id";
  50. $dir = $req_dir ? mysql_escape_string($req_dir) : "ASC";
  51. $sql .= " ORDER BY $sort $dir";
  52. $response["total"] = $db->Execute($sql)->RecordCount();
  53. $start = $req_start ? (int) $req_start : 0;
  54. $limit = $req_limit ? (int) $req_limit : 20;
  55. if ($response['total'] && $start > $response['total'])
  56. $start = floor($response['total'] / $limit) * $limit;
  57. $sql .= " LIMIT $start, $limit";
  58. $response["data"] = array();
  59. foreach ($db->GetAll($sql) as $row)
  60. {
  61. try
  62. {
  63. $DBServer = DBServer::LoadByID($row['server_id']);
  64. $row['cloud_server_id'] = $DBServer->GetCloudServerID();
  65. $row['ismaster'] = $DBServer->GetProperty(SERVER_PROPERTIES::DB_MYSQL_MASTER);
  66. }
  67. catch(Exception $e){ }
  68. $row['farm_name'] = $db->GetOne("SELECT name FROM farms WHERE id=?", array($row['farm_id']));
  69. $row['role_name'] = $db->GetOne("SELECT name FROM roles WHERE id=?", array($row['role_id']));
  70. $row['isrebooting'] = $db->GetOne("SELECT value FROM server_properties WHERE server_id=? AND `name`=?", array(
  71. $row['server_id'], SERVER_PROPERTIES::REBOOTING
  72. ));
  73. // $tz was set in ../../src/prepend.inc.php and contain TZ of current client
  74. if ($tz)
  75. {
  76. date_default_timezone_set(SCALR_SERVER_TZ);
  77. $tm = strtotime($row['dtadded']);
  78. date_default_timezone_set($tz);
  79. }
  80. else
  81. $tm = strtotime($row['dtadded']);
  82. $i_dns = $db->GetOne("SELECT value FROM server_properties WHERE server_id=? AND `name`=?", array(
  83. $row['server_id'], SERVER_PROPERTIES::EXCLUDE_FROM_DNS
  84. ));
  85. $r_dns = $db->GetOne("SELECT value FROM farm_role_settings WHERE farm_roleid=? AND `name`=?", array(
  86. $row['farm_roleid'], DBFarmRole::SETTING_EXCLUDE_FROM_DNS
  87. ));
  88. $row['dns'] = (!$i_dns && !$r_dns) ? true : false;
  89. $row['uptime'] = Formater::Time2HumanReadable(time() - (int)$tm, false);
  90. $response["data"][] = $row;
  91. }
  92. }
  93. catch(Exception $e)
  94. {
  95. $response = array("error" => $e->getMessage(), "data" => array());
  96. }
  97. print json_encode($response);
  98. ?>