| <?php | |
| $basebugs = "251715,252789,252790,252791,252792,252793,252794,252795,252796,252797,252798,252799,252800,252801,252803,252804,252805,252806,252807,252808,252809,252813,252810,252811,252812,252814,252815,252816"; | |
| $projects = array(); | |
| $requirements = array(); | |
| $must_or_should = array(); | |
| $target = array(); | |
| $data = array(); | |
| $data2 = array(); | |
| $bugid = array(); | |
| //tracks the count of bugs green/yellow/pink/orange | |
| $project_bug_status = array(); | |
| $contents = file_get_contents( "https://bugs.eclipse.org/bugs/show_bug.cgi?id=${basebugs}&ctype=xml" ); | |
| $contents = utf8_encode( $contents ); | |
| $xml = simplexml_load_string( $contents ); | |
| //print_r( $xml ); | |
| function projectof( $rec ) { | |
| switch( '' . $rec->product ) { | |
| case 'BIRT': | |
| case 'Buckminster': | |
| case 'CDT': | |
| case 'DD': | |
| case 'DLTK': | |
| case 'Data Tools': | |
| case 'ECF': | |
| case 'EMF': | |
| case 'EMFT': | |
| case 'EPP': | |
| case 'Equinox': | |
| case 'GEF': | |
| case 'GMF': | |
| case 'JWT': | |
| case 'M2M': | |
| case 'MDT': | |
| case 'PDT': | |
| case 'Platform': | |
| case 'Riena': | |
| case 'RAP': | |
| case 'SOA': | |
| case 'Subversive': | |
| case 'SWTBot': | |
| case 'TPTP': | |
| case 'Target Management': | |
| case 'Web Tools': | |
| case 'EclipseLink': | |
| return '' . $rec->product; | |
| case 'TMF': | |
| return 'TMF Xtext'; | |
| default: return $rec->product . " " . $rec->component; | |
| } | |
| } | |
| $i = 0; | |
| foreach( $xml->bug as $each ) { | |
| $req = trim('' . $each->short_desc); | |
| $reqid = trim('' . $each->bug_id); | |
| $requirements[$reqid] = $req; | |
| $must_or_should[$reqid] = ('' . $each->priority) == 'P1'; | |
| $target[$reqid] = trim('' . $each->target_milestone); | |
| $q = array(); | |
| foreach( $each->dependson as $qe ) { | |
| $q[] = $qe; | |
| } | |
| $contents = file_get_contents( "https://bugs.eclipse.org/bugs/show_bug.cgi?id=" . implode( ',', $q ) . "&field=short_desc&field=bug_id&field=bug_status&field=resolution&field=product&field=component&ctype=xml" ); | |
| $contents = utf8_encode( $contents ); | |
| $yml = simplexml_load_string( $contents ); | |
| foreach( $yml->bug as $yach ) { | |
| $pk = projectof( $yach ); | |
| $projects[$pk] = 1; | |
| $data[$reqid][$pk] = '' . $yach->bug_status; | |
| $data2[$reqid][$pk] = '' . $yach->resolution; | |
| $bugid[$reqid][$pk] = '' . $yach->bug_id; | |
| } | |
| $i++; | |
| } | |
| $projects = array_keys( $projects ); | |
| sort( $projects ); | |
| ?> | |
| <table border="1"> | |
| <tr><th></th><th></th> | |
| <?php | |
| foreach( $projects as $each ) { | |
| ?><th><?= $each ?></th><?php | |
| } | |
| ?> | |
| </tr> | |
| <?php | |
| function cmpreq( $a, $b ) { | |
| global $must_or_should; | |
| global $target; | |
| global $requirements; | |
| if( $must_or_should[$a] == $must_or_should[$b] ) { | |
| if( $target[$a] == $target[$b] ) { | |
| return strcmp($requirements[$a],$requirements[$b]); | |
| } else { | |
| return strcmp($target[$a],$target[$b]); | |
| } | |
| } else { | |
| if( $must_or_should[$a] ) | |
| return -1; | |
| else return 1; | |
| } | |
| } | |
| uksort( $requirements, 'cmpreq' ); | |
| foreach( $requirements as $reqid => $req ) { | |
| ?><tr><td><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=<?= $reqid ?>"><?= | |
| $must_or_should[$reqid] ? '<b>' : '' ?><?= | |
| $req ?><?= | |
| $must_or_should[$reqid] ? '</b>' : '' ?></a></td> | |
| <td><?= $target[$reqid] ?></td><?php | |
| foreach( $projects as $proj ) { | |
| if( isset($data[$reqid][$proj]) ) { | |
| switch( $data[$reqid][$proj] ) { | |
| case 'NEW': | |
| case 'ASSIGNED': | |
| case 'REOPENED': | |
| ?><td style="text-align: center; background-color: #FFFFCC"><a style="text-decoration: none; color: black;" | |
| href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=<?= $bugid[$reqid][$proj] ?>"><?= $bugid[$reqid][$proj] ?></a></td><?php | |
| $project_bug_status[$proj]['yellow'] ++; | |
| break; | |
| case 'RESOLVED': | |
| case 'VERIFIED': | |
| case 'CLOSED': | |
| switch( $data2[$reqid][$proj] ) { | |
| case 'FIXED': | |
| case 'WORKSFORME': | |
| case 'DUPLICATE': | |
| ?><td style="text-align: center; background-color: #CCFFCC"><a style="text-decoration: none; color: black;" | |
| href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=<?= $bugid[$reqid][$proj] ?>"><?= $bugid[$reqid][$proj] ?></a></td><?php | |
| $project_bug_status[$proj]['green'] ++; | |
| break; | |
| case 'WONTFIX': | |
| case 'INVALID': | |
| case 'WONTFIX': | |
| case 'LATER': | |
| case 'REMIND': | |
| case 'NOT_ECLIPSE': | |
| default: | |
| ?><td style="text-align: center; background-color: <?= $must_or_should[$reqid] ? "#FFCCCC" : "#FFCC99" ?>"><a style="text-decoration: none; color: black;" | |
| href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=<?= $bugid[$reqid][$proj] ?>"><?= $bugid[$reqid][$proj] ?></a></td><?php | |
| if($must_or_should[$reqid]){ | |
| $project_bug_status[$proj]['red'] ++; | |
| }else{ | |
| $project_bug_status[$proj]['orange'] ++; | |
| } | |
| break; | |
| } | |
| break; | |
| default: | |
| ?><td><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=<?= $bugid[$reqid][$proj] ?>"><?= $data[$reqid][$proj] ?></a></td><?php | |
| $project_bug_status[$proj]['white'] ++; | |
| break; | |
| } | |
| } else { | |
| ?><td style="background-color: #EEEEFF; text-align: center;"><em>missing</em></td><?php | |
| } | |
| } | |
| ?></tr> | |
| <?php | |
| } | |
| ?> | |
| <tr><th></th><th></th> | |
| <?php | |
| foreach( $projects as $each ) { | |
| ?><th><?php | |
| ?><div style="text-align: center; background-color: #CCFFCC;"><?= $project_bug_status[$each]['green'] ? $project_bug_status[$each]['green'] : "-" ; ?></div><?php | |
| ?><div style="text-align: center; background-color: #FFFFCC;"><?= $project_bug_status[$each]['yellow'] ? $project_bug_status[$each]['yellow'] : "-"; ?></div><?php | |
| ?><div style="text-align: center; background-color: #FFCC99;"><?= $project_bug_status[$each]['orange'] ? $project_bug_status[$each]['orange'] : "-"; ?></div><?php | |
| ?><div style="text-align: center; background-color: #FFCCCC;"><?= $project_bug_status[$each]['red'] ? $project_bug_status[$each]['red'] : "-"; ?></div><?php | |
| ?></th><?php | |
| } | |
| ?> | |
| </tr> | |
| </table> |