PageRenderTime 24ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

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

http://scalr.googlecode.com/
PHP | 119 lines | 88 code | 21 blank | 10 comment | 2 complexity | 4ed86f2ac0d7b487c3c48b7710d3296d 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 `scheduler_tasks` WHERE `client_id` = '{$_SESSION['uid']}'";
  10. if ($req_query)
  11. {
  12. $filter = mysql_escape_string($req_query);
  13. foreach(array("id", "task_type", "target_type", "start_time_date", "end_time_date", "last_start_time", "status") as $field)
  14. {
  15. $likes[] = "$field LIKE '%{$filter}%'";
  16. }
  17. $sql .= !stristr($sql, "WHERE") ? " WHERE " : " AND (";
  18. $sql .= join(" OR ", $likes);
  19. $sql .= ")";
  20. }
  21. $response["total"] = $db->Execute($sql)->RecordCount();
  22. // limits for table
  23. $start = $req_start ? (int) $req_start : 0;
  24. $limit = $req_limit ? (int) $req_limit : 20;
  25. $sql .= " LIMIT $start, $limit";
  26. $response["data"] = array();
  27. foreach ($db->GetAll($sql) as $row)
  28. {
  29. $farmRoleNotFound = false;
  30. switch($row['target_type'])
  31. {
  32. case SCRIPTING_TARGET::FARM:
  33. try
  34. {
  35. $DBFarm = DBFarm::LoadByID($row['target_id']);
  36. $row['target_name'] = $DBFarm->Name;
  37. $row['farmid'] = $row['target_id'];
  38. } catch ( Exception $e)
  39. {
  40. // farm object was not found.
  41. // don't add it to row
  42. $farmRoleNotFound = true;
  43. }
  44. break;
  45. case SCRIPTING_TARGET::ROLE:
  46. try
  47. {
  48. $DBFarmRole = DBFarmRole::LoadByID($row['target_id']);
  49. $row['target_name'] = $DBFarmRole->GetRoleName();
  50. $row['farmid'] = $DBFarmRole->FarmID;
  51. $row['farm_name'] = $DBFarmRole->GetFarmObject()->Name;
  52. } catch (Exception $e)
  53. {
  54. // role object was not found.
  55. // don't add it to row
  56. $farmRoleNotFound = true;
  57. }
  58. break;
  59. case SCRIPTING_TARGET::INSTANCE:
  60. $serverArgs = explode(":", $row['target_id']);
  61. try
  62. {
  63. $DBServer = DBServer::LoadByFarmRoleIDAndIndex($serverArgs[0], $serverArgs[1]);
  64. $row['target_name'] = "({$DBServer->remoteIp})";
  65. $DBFarmRole = $DBServer->GetFarmRoleObject();
  66. $row['farmid'] = $DBFarmRole->FarmID;
  67. $row['farm_name'] = $DBFarmRole->GetFarmObject()->Name;
  68. }
  69. catch(Exception $e)
  70. {
  71. // role object was not found.
  72. // don't add it to row
  73. $farmRoleNotFound = true;
  74. }
  75. break;
  76. default: break;
  77. }
  78. // if farm or role wasn't found, but exists in schedule list - don't display
  79. if($farmRoleNotFound)
  80. continue;
  81. $task_config = unserialize($row['task_config']);
  82. $row['script_name'] = $db->GetOne("SELECT name FROM scripts WHERE id=?",
  83. array($task_config['script_id'])
  84. );
  85. // add to `data` only if response matched the query or query string is empty
  86. unset($row['task_config']);
  87. unset($row['client_id']);
  88. unset($row['target_id']);
  89. $row['task_type'] = SCHEDULE_TASK_TYPE::GetTypeByName($row['task_type']);
  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. ?>