| <?php |
| # Props to Denis Roy (webmaster@eclipse.org) for the basecode from which this script grew. |
| # Logic, DB and Presentation lumped here for simplicity. |
| # Please avoid using aggregate functions (COUNT, SUM, MAX, MIN, etc) on busy web pages. |
| # For bugzilla this is not critical as the tables are small (<10,000,000 records) |
| # but imagine if every project displays a COUNT(*) for their project's bugs right on the front page! |
| # ** NOTE ** You need to tell the WebMaster from which URL you are loading this class from, |
| # otherwise the connect() will fail. |
| |
| # Load up the classfile |
| require_once "/home/data/httpd/eclipse-php-classes/system/dbconnection_bugs_ro.class.php"; |
| |
| print "<html><body><pre>"; |
| |
| $bugs = $_GET["bugs"]; |
| $debug = isset($_GET["debug"]); |
| |
| if (!$bugs) |
| { |
| echo "Enter a list of bugs to return csv data, eg:\n?bugs=147594,149770,161744,165770,166967,166112,170204,156783,170223,136881,179004,185971\n\n"; |
| exit; |
| } |
| |
| # Component,Bug #,Contributor,Size,Committer |
| $query = " |
| SELECT DISTINCT |
| BUG.bug_id, PROF.login_name, TXT.thetext |
| FROM |
| bugs as BUG, |
| profiles as PROF, |
| longdescs as TXT |
| WHERE |
| TXT.who = PROF.userid AND |
| BUG.bug_id = TXT.bug_id AND |
| TXT.thetext like '%[contrib%]%' AND |
| BUG.bug_id IN (".$bugs.") |
| ORDER BY |
| TXT.bug_when |
| ASC"; |
| |
| $data = array(); |
| $contributors = array(); |
| |
| # Connect to database |
| $dbc = new DBConnectionBugs(); |
| $dbh = $dbc->connect(); |
| |
| if ($debug) |
| { |
| print "QUERY:\n$query\n"; |
| } |
| $rs = mysql_query($query, $dbh); |
| if(mysql_errno($dbh) > 0) |
| { |
| echo "Error ".mysql_errno($dbh). ": ".mysql_error($dbh)."\n\n"; |
| # Mysql disconnects automatically, but I like my disconnects to be explicit. |
| $dbc->disconnect(); |
| $dbh = null; |
| $dbc = null; |
| } |
| else |
| { |
| while($myrow = mysql_fetch_row($rs)) |
| { |
| $contrib_email = preg_replace("/.*\\[contrib email=\"(.+)\"\/\\].*/","$1",str_replace("\n"," ",$myrow[2])); |
| $data["b".$myrow[0]] = ",".$myrow[0].",%%CONTRIB_EMAIL=".$contrib_email."%%,,".preg_replace("/(.+)\@.+/","$1",$myrow[1]); |
| $contributors[$contrib_email] = $contrib_email; |
| } |
| if ($debug) |
| { |
| print "\nDATA:\n"; print_r($data); |
| print "\nCONTRIBUTORS:\n"; print_r($contributors); |
| } |
| |
| $myrow = null; |
| $query = " |
| SELECT DISTINCT |
| PROF.login_name, PROF.realname |
| FROM |
| profiles as PROF |
| WHERE |
| PROF.login_name IN ('".join($contributors,"', '")."')"; |
| if ($debug) |
| { |
| print "QUERY:\n$query\n"; |
| } |
| $rs = mysql_query($query, $dbh); |
| if(mysql_errno($dbh) > 0) |
| { |
| echo "Error ".mysql_errno($dbh). ": ".mysql_error($dbh)."\n\n"; |
| # Mysql disconnects automatically, but I like my disconnects to be explicit. |
| $dbc->disconnect(); |
| $dbh = null; |
| $dbc = null; |
| } |
| else |
| { |
| while($myrow = mysql_fetch_row($rs)) |
| { |
| if ($myrow[1]) |
| { |
| $contributors[$myrow[0]] = $myrow[1]; |
| } |
| |
| } |
| } |
| if ($debug) |
| { |
| print "\nCONTRIBUTORS:\n"; print_r($contributors); |
| } |
| $dbc->disconnect(); |
| $rs = null; |
| $dbh = null; |
| $dbc = null; |
| |
| foreach ($data as $b => $line) |
| { |
| $m = null; |
| preg_match("/%%CONTRIB_EMAIL=(.+)%%/",$line,$m); |
| if (array_key_exists($m[1],$contributors) && isset($contributors[$m[1]])) |
| { |
| $data[$b] = preg_replace("/%%CONTRIB_EMAIL=.+%%/",$contributors[$m[1]],$line); |
| } |
| } |
| if ($debug) |
| { |
| print "\nDATA:\n"; print_r($data); |
| } |
| } |
| |
| print "Component,Bug #,Contributor,Size,Committer\n"; |
| foreach ($data as $b => $line) |
| { |
| print $line."\n"; |
| } |
| |
| print "\n\nTo determine values for Component & Size, click below for Search CVS, Changeset Patch Generator & Bugzilla:\n\n"; |
| foreach ($data as $b => $line) |
| { |
| $v = substr($b,1); |
| print "<a href=\"http://www.eclipse.org/modeling/emf/searchcvs.php?q=$v\" target=\"_bug\">$v</a>\t"; |
| print "<a href=\"http://www.eclipse.org/modeling/emf/news/changeset.php?bugid=$v\" target=\"_bug\">$v</a>\t"; |
| print "<a href=\"https://bugs.eclipse.org/bugs/show_bug.cgi?id=$v\" target=\"_bug\">$v</a>\n"; |
| } |
| print "</pre>\n"; |
| ?> |