PageRenderTime 37ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 1ms

/web/roadmap.php

https://bitbucket.org/yoander/mtrack
PHP | 93 lines | 80 code | 12 blank | 1 comment | 16 complexity | 2a0ea685372cfda7e554316966e2eef9 MD5 | raw file
Possible License(s): BSD-3-Clause, Apache-2.0
  1. <?php # vim:ts=2:sw=2:et:
  2. /* For licensing and copyright terms, see the file named LICENSE */
  3. include '../inc/common.php';
  4. MTrackACL::requireAllRights('Roadmap', 'read');
  5. mtrack_head("Roadmap");
  6. $completed = isset($_GET['completed']) ? 'checked' : '';
  7. $watched = isset($_GET['watched']) ? 'checked' : '';
  8. echo <<<HTML
  9. <h1>Roadmap</h1>
  10. <div id="roadmapfilter">
  11. <form method="get">
  12. <input type="checkbox" id='completed' name="completed" $completed>
  13. <label for='completed'>Show completed milestones</label><br/>
  14. <input type="checkbox" id='watched' name="watched" $watched>
  15. <label for='watched'>Show only watched milestones</label><br/>
  16. <button class='btn' type="submit" name='s'><i class='icon-refresh'></i> Update</button><br>
  17. </form>
  18. <button class='btn' id="addmilestone" onclick="document.location.href='{$ABSWEB}milestone.php?new=1';return false;"><i class='icon-plus'></i> Add Milestone</button>
  19. <script type='text/javascript'>
  20. var showingGraphs = true;
  21. function toggleGraphs()
  22. {
  23. if (showingGraphs) {
  24. $('.burndown').hide();
  25. } else {
  26. $('.burndown').show();
  27. }
  28. showingGraphs = !showingGraphs;
  29. }
  30. </script>
  31. <button class='btn' onclick="toggleGraphs(); return false;">Toggle Graphs</button>
  32. </div>
  33. HTML;
  34. $db = MTrackDB::get();
  35. if (!empty($_GET['completed'])) {
  36. $comp = "";
  37. } else {
  38. $comp = " AND completed IS NULL ";
  39. }
  40. if ($watched == 'checked') {
  41. $me = $db->quote(mtrack_canon_username(MTrackAuth::whoami()));
  42. if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'pgsql') {
  43. $oid = 'w.oid::integer';
  44. } else {
  45. $oid = 'w.oid';
  46. }
  47. $sql = <<<SQL
  48. SELECT distinct name, duedate
  49. FROM watches w
  50. LEFT JOIN milestones m on (m.mid = $oid)
  51. WHERE
  52. w.userid = $me AND
  53. w.otype = 'milestone' AND
  54. deleted != 1
  55. AND pmid IS NULL
  56. $comp
  57. ORDER by duedate ASC, name
  58. SQL;
  59. } else {
  60. $sql = <<<SQL
  61. SELECT name
  62. FROM milestones
  63. WHERE
  64. deleted != 1
  65. AND pmid IS NULL
  66. $comp
  67. ORDER by case when duedate IS NULL then 1 else 0 end, duedate ASC, name
  68. SQL;
  69. }
  70. $i = 0;
  71. foreach ($db->query($sql)->fetchAll(PDO::FETCH_ASSOC) as $row) {
  72. echo MTrackMilestone::macro_MilestoneSummary($row['name']);
  73. $i++;
  74. }
  75. if ($i == 0) {
  76. $milestones = $watched == 'checked' ? 'watched milestones' : 'milestones';
  77. echo <<<HTML
  78. <p><em>No $milestones were found.</em></p>
  79. HTML;
  80. }
  81. mtrack_foot();