Re: [PHP-CVS] svn: / SVNROOT/commit-email.php web/php-bugs/trunk/bug.php web/php-bugs/trunk/rpc.php
[email protected] (Jani Taskinen) Mon, 20 Jul 2009 13:37:20 +0300
| Newsgroups | php.cvs,php.webmaster,svn.migration |
|---|---|
| Message-ID | <[email protected]> |
This is all nice and that crap, but since you didn't merge it into
pear/packages/Bugtracker, it will all be lost once that stuff is taken
into action..so please merge this there too. :D
--Jani
On 07/20/2009 12:08 AM, Rasmus Lerdorf wrote:
> 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')));
>
>