Added Text2PDF, a tool which converts text files
[AROS-Contrib.git] / bgui / bugs / bugs_statistics.php
blob409844829390efde0d244cbabaf1fc020632729a
1 <?
2 /*
3 * bugs_statistics.php
5 * @(#) $Header$
7 */
9 require($bugs_application_path."bugs_globals.php");
10 require($bugs_application_path."bugs_locale.php");
11 require($bugs_application_path."bugs_database.php");
12 require($bugs_shared_include_file);
14 function mydate($date,$time) {
15 $scanned_date=BugsDatabaseScanDate($date);
16 $year = $scanned_date["year"];
17 $month = $scanned_date["month"];
18 $day = $scanned_date["day"];
19 $hour = substr($time,0,2);
20 $min = substr($time,3,2);
21 $sec = substr($time,6,2);
22 return mktime($hour,$min,$sec,$month,$day,$year);
25 function ShowTime($sec) {
26 if($sec==1) {
27 return sprintf(LocaleText("1-second"),$sec);
28 } else if($sec<60) {
29 return sprintf(LocaleText("n-seconds"),$sec);
30 } else if($sec<120) {
31 return sprintf(LocaleText("1-minute-n-seconds"),$sec%60);
32 } else if($sec<3600) {
33 return sprintf(LocaleText("n-minutes-n-seconds"),(int)($sec/60),($sec%60));
34 } else if($sec<7200) {
35 return sprintf(LocaleText("1-hour-n-minutes-n-seconds"),(int)(($sec%3600)/60),sec%60);
36 } else if($sec<86400) {
37 return sprintf(LocaleText("n-hours-n-minutes-n-seconds"),(int)($sec/3600),(int)(($sec%3600)/60),(($sec%3600)%60));
38 } else if($sec<172800) {
39 return sprintf(LocaleText("1-day-n-hours-n-minutes-n-seconds"),(int)($sec/3600),(int)(($sec%3600)/60),(($sec%3600)%60));
40 } else {
41 return sprintf(LocaleText("n-days-n-hours-n-minutes-n-seconds"),(int)($sec/86400),(int)($sec/3600),(int)(($sec%3600)/60),(($sec%3600)%60));
45 commonHeader(LocaleText("Bug-Statistics"));
47 if((BugsDatabaseConnect($bugs_database_name))<=0)
48 $bugs_debug("Could not connect to the database server!");
49 if(BugsDatabaseSeparateDateTime())
51 $date_time="ts1_date,ts1_time,ts2_date,ts2_time";
52 $assigned_column=14;
53 $dev_id_column=13;
55 else
57 $date_time="ts1,ts2";
58 $assigned_column=12;
59 $dev_id_column=11;
61 if(($result=BugsDatabaseQuery("SELECT id,bug_type,email,sdesc,ldesc,program_version,os,status,comments,$date_time,dev_id,assign from bugdb"))<=0)
62 $bugs_debug("It was not possible to query the bugs database! (".BugsDatabaseError().")\n");
63 if(BugsDatabaseNumberOfRows($result)==0)
65 echo "<H1><CENTER>",LocaleText("There-are-no-bug-reports-to-produce-statistics"),"</CENTER></H1>";
66 BugsDatabaseFreeResult($result);
68 else
70 echo "<H1><CENTER>",LocaleText("Bug-Report-Statistics"),"</CENTER></H1>\n<HR>\n";
71 for($bug_type=$email=$closed_by=$time_to_close=array();$row=BugsDatabaseFetchNextRow($result);) {
72 $bug_type['all'][$row[1]]++;
73 $bug_status=strtok($row[7]," ");
74 if($bug_status=="Open") {
75 $bug_type['open'][$row[1]]++;
77 if($bug_status=="Analyzed") {
78 $bug_type['analyzed'][$row[1]]++;
80 if($bug_status=="Suspended") {
81 $bug_type['suspended'][$row[1]]++;
83 if($bug_status=="Duplicate") {
84 $bug_type['duplicate'][$row[1]]++;
86 if($bug_status=="Assigned") {
87 $bug_type['assigned'][$row[1]]++;
89 $email[$row[2]]++;
90 $program_version[$row[5]]++;
91 $os[$row[6]]++;
92 $status[$bug_status]++;
93 if($bug_status=="Closed") {
94 $bug_type['closed'][$row[1]]++;
95 if(BugsDatabaseSeparateDateTime())
97 $date1=$row[9];
98 $time1=$row[10];
99 $date2=$row[11];
100 $time2=$row[12];
101 $closed_by[$row[13]]++;
103 else
105 $date1=strtok($row[9]," ");
106 $time1=strtok(" ");
107 $date2=strtok($row[10]," ");
108 $time2=strtok(" ");
109 $closed_by[$row[11]]++;
111 $time_to_close[] = mydate($date2,$time2) - mydate($date1,$time1);
113 $total++;
116 function bugstats($status, $type) {
117 global $bug_type,$PHP_SELF;
118 if ($bug_type[$status][$type] > 0) {
119 return '<A href=$PHP_SELF."?cmd=Display+Bugs&status=' . ucfirst($status) . '&bug_type=' . urlencode($type) . '">' . $bug_type[$status][$type] . "</A>\n";
123 BugsDatabaseFreeResult($result);
124 if(IsSet($bug_type['all']))
126 echo "<center><table border>\n";
127 echo "<tr bgcolor=#aabbcc><th align=right>",LocaleText("Total-bug-entries"),":</th><td>$total</td><th>",LocaleText("Closed"),"</th><th>",LocaleText("Open"),"</th><th>",LocaleText("Analyzed"),"</th><th>",LocaleText("Suspended"),"</th><th>",LocaleText("Duplicate"),"</th><th>",LocaleText("Assigned"),"</th></tr>\n";
128 while(list($type,$value)=each($bug_type['all'])) {
129 $type=strtok($type," ");
130 echo "<tr><th align=right bgcolor=#aabbcc>",LocaleText(strtok($type," ")),":</th><td align=center bgcolor=#ccddee>$value</td><td align=center bgcolor=#ddeeff>".bugstats('closed', $type)."&nbsp;</td><td align=center bgcolor=#ccddee>".bugstats('open', $type)."&nbsp;</td><td align=center bgcolor=#ddeeff>".bugstats('analyzed', $type)."&nbsp;</td><td align=center bgcolor=#ccddee>".bugstats('suspended',$type)."&nbsp;</td><td align=center bgcolor=#ddeeff>".bugstats('duplicate', $type)."&nbsp;</td><td align=center bgcolor=#ccddee>".bugstats('assigned',$type)."&nbsp;</td></tr>\n";
132 echo "</table></center><hr>\n";
135 if(($c=count($time_to_close))!=0)
137 sort($time_to_close);
138 $sum=0;
139 for($i=0;$i<$c;$i++) {
140 $sum+=$time_to_close[$i];
142 $median = $time_to_close[(int)($c/2)];
143 $slowest=$time_to_close[$c-1];
144 $quickest=$time_to_close[0];
145 echo "<h2><center>",LocaleText("Bug-Report-Time-to-Close-Statistics"),"</center></h2>\n";
146 echo "<center><table border>\n";
147 echo "<tr bgcolor=#aabbcc><th align=right>",LocaleText("Average-life-of-a-report"),":</th><td bgcolor=#ccddee>".ShowTime($c==0 ? 0 : (int)($sum/$c))."</td></tr>\n";
148 echo "<tr bgcolor=#aabbcc><th align=right>",LocaleText("Median-life-of-a-report"),":</th><td bgcolor=#ccddee>".ShowTime($median)."</td></tr>\n";
149 echo "<tr bgcolor=#aabbcc><th align=right>",LocaleText("Slowest-report-closure"),":</th><td bgcolor=#ccddee>".ShowTime($slowest)."</td></tr>\n";
150 echo "<tr bgcolor=#aabbcc><th align=right>",LocaleText("Quickest-report-closure"),":</th><td bgcolor=#ccddee>".ShowTime($quickest)."</td></tr>\n";
151 echo "</table></center><hr>\n";
152 arsort($closed_by);
153 echo "<h2><center>",LocaleText("Who-is-closing-the-bug-reports"),"</center></h2>\n";
154 echo "<center><table border>\n";
155 while(list($who,$value)=each($closed_by)) {
156 echo "<tr bgcolor=#aabbcc><th>$who</th><td bgcolor=#ccddee>$value</td></tr>\n";
158 echo "</table></center><hr>\n";
161 if(count($email))
163 arsort($email);
164 echo "<h2><center>",LocaleText("Who-is-submitting-bug-reports"),"</center></h2>\n";
165 echo "<center><table border>\n";
166 while(list($who,$value)=each($email)) {
167 echo "<tr bgcolor=#aabbcc><th>$who</th><td bgcolor=#ccddee>$value</td></tr>\n";
169 echo "</table></center><hr>\n";
173 commonFooter();