|  | <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> |