svn: / SVNROOT/commit-email.php web/php-bugs/trunk/bug.php web/php-bugs/trunk/rpc.php
[email protected] (Rasmus Lerdorf) Sun, 19 Jul 09 21:08:22 +0000
| Newsgroups | php.cvs,php.webmaster,svn.migration |
|---|---|
| Message-ID | <[email protected]> |
--2f64bfb3c27270886114055a69c6a715892bac4f
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
rasmus Sun, 19 Jul 2009 21:08:22 +0000
URL: http://svn.php.net/viewvc?view=revision&revision=284386
Changed paths:
U SVNROOT/commit-email.php
U web/php-bugs/trunk/bug.php
A web/php-bugs/trunk/rpc.php
Log:
Bugs mentioned in commit messages now update the bug db and also
pull the status of the bug back into the commit email.
(I'm pretty sure this won't work on the first try)
Modified: SVNROOT/commit-email.php
===================================================================
--- SVNROOT/commit-email.php 2009-07-19 20:53:26 UTC (rev 284385)
+++ SVNROOT/commit-email.php 2009-07-19 21:08:22 UTC (rev 284386)
@@ -9,6 +9,7 @@
// Constants
$version = substr('$Revision$', strlen('$Revision: '), -2);
$smtp_server = '127.0.0.1';
+
$commit_email_list = array(
// FastCGI ISAPI
'|^php/fastcgi-isapi|' => array('[email protected]', '[email protected]', '[email protected]'),
@@ -218,8 +219,34 @@
$bugs_body = '';
if ($bugs) {
+ include '/home/svn/SVNROOT/secret.inc';
+ $bugs_body = (count($bugs_array[1])>1) ? "Bug: " : "Bugs: ";
foreach ($bugs_array[1] as $k=>$bug_id) {
- $bugs_body .= ' '.$bug_urls[$k]."/$bug_id\r\n";
+ $bug_sdesc = '';
+ $bug_status = '';
+ if($bug_urls[$k]=='http://bugs.php.net') {
+ $ch = curl_init('http://bugs.php.net/rpc.php');
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_POST, 1);
+ $ncomment = "Automatic comment from SVN on behalf of {$from[0]}\n" .
+ "Log: $commit_log\n" .
+ "Revision: http://svn.php.net/viewvc?view=revision&revision={$REV}\n";
+ curl_setopt($ch, CURLOPT_POSTFIELDS, "user=" . rawurlencode($from[0]) .
+ "&id={$bug_id}" .
+ "&ncomment=" . rawurlencode($ncomment) .
+ "&MAGIC_COOKIE=$SVN_MAGIC_COOKIE");
+ $ret = curl_exec($ch);
+ if($ret !== false ) {
+ $json = json_decode($ret,true);
+ if(isset($json['result']['status'])) {
+ $bug_status = '('.$json['result']['status']['status'].')';
+ $bug_sdesc = $json['result']['status']['sdesc'];
+ }
+ }
+ curl_close($ch);
+ }
+ if($k) $bugs_body .= ' ';
+ $bugs_body .= $bug_urls[$k]."/$bug_id{$bug_status}{$bug_sdesc}\r\n";
}
}
@@ -229,7 +256,7 @@
"\r\n" .
"{$commit_user}\t\t" . date(DATE_RFC2822, $commit_date) . "\r\n" .
"\r\n" .
- "URL: http://svn.php.net/viewvc?view=revision&revision={$REV}\r\n" .
+ "Revision: http://svn.php.net/viewvc?view=revision&revision={$REV}\r\n" .
$bugs_body .
"\r\n" .
"Changed paths:\r\n" .
Modified: web/php-bugs/trunk/bug.php
===================================================================
--- web/php-bugs/trunk/bug.php 2009-07-19 20:53:26 UTC (rev 284385)
+++ web/php-bugs/trunk/bug.php 2009-07-19 21:08:22 UTC (rev 284386)
@@ -124,7 +124,7 @@
if (!$errors) {
$query = "INSERT INTO bugdb_comments (bug,email,ts,comment) VALUES"
- . " ('$id','" . $in['commentemail'] . "',NOW(),'$ncomment')";
+ . " ('$id','" . mysql_real_escape_string($in['commentemail']) . "',NOW(),'".mysql_real_escape_string($ncomment)."')";
$success = @mysql_query($query);
}
$from = stripslashes($in['commentemail']);
@@ -160,12 +160,12 @@
if (!$errors && !($errors = incoming_details_are_valid($in))) {
/* update bug record */
- $query = "UPDATE bugdb SET sdesc='" . $in['sdesc'] . "',status='" . $in['status'] . "', bug_type='" . $in['bug_type'] . "', php_version='" . $in['php_version'] . "', php_os='" . $in['php_os'] . "', ts2=NOW(), email='$from' WHERE id=$id";
+ $query = "UPDATE bugdb SET sdesc='" . mysql_real_escape_string($in['sdesc']) . "',status='" . mysql_real_escape_string($in['status']) . "', bug_type='" . mysql_real_escape_string($in['bug_type']) . "', php_version='" . mysql_real_escape_string($in['php_version']) . "', php_os='" . mysql_real_escape_string($in['php_os']) . "', ts2=NOW(), email='".mysql_real_escape_string($from)."' WHERE id=$id";
$success = @mysql_query($query);
/* add comment */
if ($success && !empty($ncomment)) {
- $query = "INSERT INTO bugdb_comments (bug, email, ts, comment) VALUES ($id,'$from',NOW(),'$ncomment')";
+ $query = "INSERT INTO bugdb_comments (bug, email, ts, comment) VALUES ($id,'".mysql_real_escape_string($from)."',NOW(),'".mysql_real_escape_string($ncomment)."')";
$success = @mysql_query($query);
}
}
@@ -215,11 +215,11 @@
if (!$errors && !($errors = incoming_details_are_valid($in))) {
$query = 'UPDATE bugdb SET ';
- $query.= ($bug['email'] != $in['email'] && !empty($in['email'])) ? "email='" . $in['email'] . "', " : '';
- $query.= "sdesc='$in[sdesc]', status='$in[status]', bug_type='$in[bug_type]', assign='$in[assign]', php_version='$in[php_version]', php_os='$in[php_os]', ts2=NOW() WHERE id=$id";
+ $query.= ($bug['email'] != $in['email'] && !empty($in['email'])) ? "email='" . mysql_real_escape_string($in['email']) . "', " : '';
+ $query.= "sdesc='".mysql_real_escape_string($in[sdesc])."', status='".mysql_real_escape_string($in[status])."', bug_type='".mysql_real_escape_string($in[bug_type])."', assign='".mysql_real_escape_string($in[assign])."', php_version='".mysql_real_escape_string($in[php_version])."', php_os='".mysql_real_escape_string($in[php_os])."', ts2=NOW() WHERE id=$id";
$success = @mysql_query($query);
if ($success && !empty($ncomment)) {
- $query = "INSERT INTO bugdb_comments (bug, email, ts, comment) VALUES ($id,'[email protected]',NOW(),'$ncomment')";
+ $query = "INSERT INTO bugdb_comments (bug, email, ts, comment) VALUES ($id,'[email protected]',NOW(),'".mysql_real_escape_string($ncomment)."')";
$success = @mysql_query($query);
}
Added: web/php-bugs/trunk/rpc.php
===================================================================
--- web/php-bugs/trunk/rpc.php (rev 0)
+++ web/php-bugs/trunk/rpc.php 2009-07-19 21:08:22 UTC (rev 284386)
@@ -0,0 +1,59 @@
+<?php /* vim: set noet ts=4 sw=4: : */
+$id = (int)$_REQUEST['id'];
+
+if (!$id) {
+ echo json_encode(array('result'=>array('error'=>'Missing bug id')));
+ exit;
+}
+
+require './include/auth.inc';
+
+if (isset($_POST['MAGIC_COOKIE'])) {
+ list($user,$pw) = explode(":", base64_decode($_POST['MAGIC_COOKIE']));
+} else {
+ echo json_encode(array('result'=>array('error'=>'Missing credentials')));
+ exit;
+}
+
+if (!verify_password($user,$pw)) {
+ echo json_encode(array('result'=>array('error'=>'Invalid user or password')));
+ exit;
+}
+
+@mysql_connect("localhost","nobody","") or die("Unable to connect to SQL server.");
+@mysql_select_db("phpbugdb");
+
+# fetch info about the bug into $bug
+$query = "SELECT id,bug_type,email,sdesc,ldesc,php_version,php_os,status,ts1,ts2,assign,"
+ . "UNIX_TIMESTAMP(ts1) AS submitted, UNIX_TIMESTAMP(ts2) AS modified,"
+ . "COUNT(bug=id) AS votes,"
+ . "SUM(reproduced) AS reproduced,SUM(tried) AS tried,"
+ . "SUM(sameos) AS sameos, SUM(samever) AS samever,"
+ . "AVG(score)+3 AS average,STD(score) AS deviation"
+ . " FROM bugdb LEFT JOIN bugdb_votes ON id=bug WHERE id=$id"
+ . " GROUP BY bug";
+
+$res = mysql_query($query);
+
+if ($res) {
+ $bug = mysql_fetch_assoc($res);
+}
+
+if (!$res || !$bug) {
+ echo json_encode(array('result'=>array('error'=>'No such bug')));
+ exit;
+}
+
+if(!empty($_POST['ncomment'])) {
+ $ncomment = trim($_POST['ncomment']);
+ $query = "INSERT INTO bugdb_comments (bug,email,ts,comment) VALUES ('$id','[email protected]',NOW(),'".mysql_real_escape_string($ncomment)."')";
+ $success = @mysql_query($query);
+ if($success) {
+ echo json_encode(array('result'=>array('status'=>$bug)));
+ } else {
+ echo json_encode(array('result'=>array('error'=>mysql_error())));
+ exit;
+ }
+}
+
+echo json_encode(array('result'=>array('error'=>'Nothing to do')));
--2f64bfb3c27270886114055a69c6a715892bac4f--