| <svg xmlns="http://www.w3.org/2000/svg" height="100%" width="100%"> |
| <?php |
| function drawGraph($title, $xmax, $ymax, $xlegend, $ylegend) |
| { |
| echo "<text style=\"text-anchor:middle\" x=\"50%\" y=\"10%\">$title</text>"; |
| echo "<line style=\"stroke:rgb(128,128,128);stroke-width:1\" x1=\"15%\" y1=\"15%\" x2=\"15%\" y2=\"85%\"/>"; |
| echo "<line style=\"stroke:rgb(128,128,128);stroke-width:1\" x1=\"15%\" y1=\"85%\" x2=\"85%\" y2=\"85%\"/>"; |
| echo "<text style=\"text-anchor:middle\" x=\"50%\" y=\"93%\">$xlegend</text>"; |
| echo "<text style=\"text-anchor:middle\" x=\"8%\" y=\"50%\">$ylegend</text>"; |
| $delta = (int)$ymax/10; |
| for ($i = 0; $i < $ymax; $i++) |
| { |
| if ($i % $delta == 0) |
| { |
| $y = 85 - ($i/$ymax*70); |
| echo "<text style=\"text-anchor:end\" x=\"14.5%\" y=\"$y%\">$i</text>"; |
| echo "<line style=\"stroke:rgb(128,128,128);stroke-width:1\" x1=\"14.5%\" y1=\"$y%\" x2=\"15.5%\" y2=\"$y%\"/>"; |
| } |
| } |
| } |
| |
| function countTimeIntervals($start, $end) |
| { |
| $count = 0; |
| while ($start < $end) |
| { |
| $count++; |
| $start = date("YmdHis", mktime(substr($start, 8, 2), substr($start, 10, 2), substr($start, 12, 2), substr($start, 4, 2), substr($start, 6, 2) + 7, substr($start, 0, 4))); |
| } |
| $count++; |
| return $count; |
| } |
| |
| function plot($xmax, $ymax, $width, $height, $xstart, $ystart, $prevx, $prevy, $currx, $curry, $x, $y, $r, $g, $b, $text) |
| { |
| $x1 = $prevx/$xmax*$width + $xstart; |
| $y1 = $ystart - ($prevy/$ymax*$height); |
| $x2 = $currx/$xmax*$width + $xstart; |
| $y2 = $ystart - ($curry/$ymax*$height); |
| echo "<line style=\"stroke:rgb($r,$g,$b);stroke-width:1\" x1=\"$x1%\" y1=\"$y1%\" x2=\"$x2%\" y2=\"$y2%\"/>\n"; |
| if ($text != null) |
| { |
| echo "<text fill=\"rgb($r,$g,$b)\" style=\"text-anchor:middle\" x=\"$x2%\" y=\""; |
| echo $y2 - 1; |
| echo "%\">$text</text>"; |
| } |
| $i = (int)$xmax/10; |
| if ($currx == 0 || $currx % $i == 0) |
| { |
| echo "<text style=\"text-anchor:middle\" x=\"$x2%\" y=\"88%\">"; |
| echo substr($x, 0, 8); |
| echo "</text>"; |
| echo "<line style=\"stroke:rgb(128,128,128);stroke-width:1\" x1=\"$x2%\" y1=\"84.5%\" x2=\"$x2%\" y2=\"85.5%\"/>"; |
| } |
| } |
| ?> |
| <?php |
| require_once "/home/data/httpd/eclipse-php-classes/system/dbconnection_bugs_ro.class.php"; |
| |
| # Connect to database |
| $allBugsQuery = "SELECT |
| BUG.bug_id, |
| BUG.creation_ts |
| FROM |
| bugs AS BUG |
| INNER JOIN products AS PROD ON PROD.id = BUG.product_id |
| WHERE |
| PROD.name='Web Tools' |
| ORDER BY |
| BUG.creation_ts"; |
| |
| $resolvedBugsQuery = "SELECT |
| BUG_ACT.bug_id, |
| BUG_ACT.bug_when, |
| BUG_ACT.added |
| FROM |
| bugs_activity AS BUG_ACT |
| INNER JOIN bugs AS BUG ON BUG.bug_id = BUG_ACT.bug_id |
| INNER JOIN products AS PROD ON PROD.id = BUG.product_id |
| INNER JOIN fielddefs AS FIELD ON FIELD.fieldid = BUG_ACT.fieldid |
| WHERE |
| PROD.name='Web Tools' |
| AND FIELD.fieldid=8 |
| AND (BUG_ACT.added='RESOLVED' OR BUG_ACT.added='REOPENED') |
| ORDER BY |
| BUG_ACT.bug_when"; |
| |
| $dbc = new DBConnectionBugs(); |
| $dbh = $dbc->connect(); |
| $rs = mysql_query($allBugsQuery, $dbh); |
| |
| if(mysql_errno($dbh) > 0) |
| { |
| echo "There was an error processing this request". |
| |
| # For debugging purposes - don't display this stuff in a production page. |
| # echo mysql_error($dbh); |
| |
| # Mysql disconnects automatically, but I like my disconnects to be explicit. |
| $dbc->disconnect(); |
| exit; |
| } |
| |
| $today = date("YmdHis"); |
| $cutoff = 20040801000000; |
| $prevBugCount = 0; |
| $currBugCount = 0; |
| $dateCount = 0; |
| $xmax = countTimeIntervals($cutoff, $today); |
| $ymax = mysql_num_rows($rs); |
| drawGraph("New / Assigned / Reopened Bugs", $xmax, $ymax, "Time", "# Bugs"); |
| $total = array(); |
| while($myrow = mysql_fetch_assoc($rs)) |
| { |
| $creation_ts = $myrow['creation_ts']; |
| $creation_ts = substr($creation_ts, 0, 4) . substr($creation_ts, 5, 2) . substr($creation_ts, 8, 2) . substr($creation_ts, 11, 2) . substr($creation_ts, 14, 2) . substr($creation_ts, 17, 2); |
| if ($creation_ts > $cutoff) |
| { |
| $total[] = $currBugCount; |
| plot($xmax, $ymax, 70, 70, 15, 85, $dateCount, $prevBugCount, $dateCount + 1, $currBugCount, $cutoff, $currBugCount, 0, 0, 128, null); |
| $prevBugCount = $currBugCount; |
| $dateCount++; |
| $cutoff = date("YmdHis", mktime(substr($cutoff, 8, 2), substr($cutoff, 10, 2), substr($cutoff, 12, 2), substr($cutoff, 4, 2), substr($cutoff, 6, 2) + 7, substr($cutoff, 0, 4))); |
| } |
| $currBugCount++; |
| } |
| $total[] = $currBugCount; |
| plot($xmax, $ymax, 70, 70, 15, 85, $dateCount, $prevBugCount, $dateCount + 1, $currBugCount, $cutoff, $currBugCount, 0, 0, 128, "Total: " . $currBugCount); |
| |
| $rs = mysql_query($resolvedBugsQuery, $dbh); |
| |
| if(mysql_errno($dbh) > 0) |
| { |
| echo "There was an error processing this request". |
| |
| # For debugging purposes - don't display this stuff in a production page. |
| # echo mysql_error($dbh); |
| |
| # Mysql disconnects automatically, but I like my disconnects to be explicit. |
| $dbc->disconnect(); |
| exit; |
| } |
| |
| $cutoff = 20040801000000; |
| $prevBugCount = 0; |
| $currBugCount = 0; |
| $dateCount = 0; |
| while($myrow = mysql_fetch_assoc($rs)) |
| { |
| $bug_when = $myrow['bug_when']; |
| $bug_when = substr($bug_when, 0, 4) . substr($bug_when, 5, 2) . substr($bug_when, 8, 2) . substr($bug_when, 11, 2) . substr($bug_when, 14, 2) . substr($bug_when, 17, 2); |
| if ($bug_when > $cutoff) |
| { |
| plot($xmax, $ymax, 70, 70, 15, 85, $dateCount, $prevBugCount, $dateCount + 1, $total[$dateCount] - $currBugCount, $cutoff, $total[$dateCount] - $currBugCount, 255, 128, 0, null); |
| $prevBugCount = $total[$dateCount] - $currBugCount; |
| $dateCount++; |
| $cutoff = date("YmdHis", mktime(substr($cutoff, 8, 2), substr($cutoff, 10, 2), substr($cutoff, 12, 2), substr($cutoff, 4, 2), substr($cutoff, 6, 2) + 7, substr($cutoff, 0, 4))); |
| } |
| if ($myrow['added'] == "REOPENED") |
| { |
| $currBugCount--; |
| } |
| else |
| { |
| $currBugCount++; |
| } |
| } |
| plot($xmax, $ymax, 70, 70, 15, 85, $dateCount, $prevBugCount, $dateCount + 1, $total[$dateCount] - $currBugCount, $cutoff, $total[$dateCount] - $currBugCount, 255, 128, 0, "New/Assigned/Reopened: " . ($total[$dateCount] - $currBugCount)); |
| |
| $dbc->disconnect(); |
| $rs = null; |
| $dbh = null; |
| $dbc = null; |
| ?> |
| </svg> |