svn: /pear2/BugManager/trunk/data/ port_pearweb_to_bugmanager.php

[email protected] (Greg Beaver) Sun, 19 Sep 2010 06:30:26 +0000
Newsgroups php.pear.cvs,php.pear.core
Message-ID <[email protected]>
cellog                                   Sun, 19 Sep 2010 06:30:26 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=303544

Log:
refine database migration script so that patches are linked to their comments, and for old bugs, new comments are created that can be linked to the patch.  Also, fix the percentage indicators to work for odd-numbers of things

Changed paths:
    U   pear2/BugManager/trunk/data/port_pearweb_to_bugmanager.php

Modified: pear2/BugManager/trunk/data/port_pearweb_to_bugmanager.php
===================================================================
--- pear2/BugManager/trunk/data/port_pearweb_to_bugmanager.php	2010-09-19 05:55:01 UTC (rev 303543)
+++ pear2/BugManager/trunk/data/port_pearweb_to_bugmanager.php	2010-09-19 06:30:26 UTC (rev 303544)
@@ -3,6 +3,14 @@
     die("mysqli extension required");
 }
 $mysqli = new Mysqli("localhost", "pear", "pear", "pear");
+$mysqli->query('
+DELETE FROM bugmanager_issues;
+DELETE FROM bugmanager_comments;
+DELETE FROM bugmanager_obsoletes_patches;
+DELETE FROM bugmanager_patchtracker;
+DELETE FROM bugmanager_roadmap;
+DELETE FROM bugmanager_roadmap_link;
+               ');

 $a = function ($values) use ($mysqli)
 {
@@ -58,7 +66,8 @@
     return $ret;
 };

-$e = function ($values) use ($mysqli)
+$bugcomment = 102000;
+$e = function ($values) use ($mysqli, $bugcomment)
 {
     $ret = '';
     foreach (array('bugdb_id', 'patch', 'revision') as $field) {
@@ -68,10 +77,34 @@
         }
         $ret .= '"' . $mysqli->real_escape_string($values[$field]) . '",';
     }
-    $inf = $mysqli->query("SELECT id FROM bugdb_comments WHERE bug=" . $values['bugdb_id'] . ' ORDER BY
+    // first find a comment that
+    $inf = $mysqli->query("SELECT id FROM bugdb_comments WHERE bug=" . $values['bugdb_id'] . '
+                          AND handle="' . $values['developer'] . '" AND comment LIKE "Added #patch bug:' .
+                          $values['bugdb_id'] . ';patch:' . $values['patch'] . ';revision:' .
+                          $values['revision'] . ';.%" ORDER BY
                           ts DESC');
-    $info = $inf->fetch_assoc();
-    $ret .= $info['id'] . ','; // use an arbitrary comment id
+    if ($inf->num_rows) {
+        $info = $inf->fetch_assoc();
+    } else {
+        $inf = $mysqli->query("SELECT id FROM bugdb_comments WHERE bug=" . $values['bugdb_id'] . '
+                              AND handle="' . $values['developer'] . '" ORDER BY
+                              ts DESC');
+        if (!$inf->num_rows) {
+            $inf->free_result();
+            $bug = $mysqli->query("SELECT * FROM users WHERE handle='" . $values['developer'] . "'");
+            $bugi = $bug->fetch_assoc();
+            $bug->free_result();
+            $mysqli->query($sql = 'INSERT INTO bugmanager_comments (id, bug_id, email, handle, reporter_name, ts, comment,
+                recordversion) VALUES(' . $bugcomment++ . ',' . $values['bugdb_id'] . ',"' . $bugi['email'] .
+                '","' . $bugi['handle'] . '","' . $bugi['name'] . '","' . $values['revision'] . '","Added #patch bug:' . $values['bugdb_id'] .
+                ';patch:' . $values['patch'] . ';revision:' . $values['revision'] . ';.","1.0")');
+            $info = array('id' => $bugcomment - 1);
+        } else {
+            $info = $inf->fetch_assoc();
+        }
+    }
+
+    $ret .= $info['id'] . ','; // use a comment that the patch developer made
     return $ret;
 };

@@ -81,16 +114,16 @@
 $total = $res->num_rows;
 $i = 0;
 $milestones = array(
-    .1 * $total,
-    .2 * $total,
-    .3 * $total,
-    .4 * $total,
-    .5 * $total,
-    .6 * $total,
-    .7 * $total,
-    .8 * $total,
-    .9 * $total,
-    $total + 1
+    round(.1 * $total),
+    round(.2 * $total),
+    round(.3 * $total),
+    round(.4 * $total),
+    round(.5 * $total),
+    round(.6 * $total),
+    round(.7 * $total),
+    round(.8 * $total),
+    round(.9 * $total),
+    $total
 );
 $j = 1;
 while ($row = $res->fetch_assoc()) {
@@ -120,16 +153,16 @@
 $total = $res->num_rows;
 $i = 0;
 $milestones = array(
-    .1 * $total,
-    .2 * $total,
-    .3 * $total,
-    .4 * $total,
-    .5 * $total,
-    .6 * $total,
-    .7 * $total,
-    .8 * $total,
-    .9 * $total,
-    $total + 1
+    round(.1 * $total),
+    round(.2 * $total),
+    round(.3 * $total),
+    round(.4 * $total),
+    round(.5 * $total),
+    round(.6 * $total),
+    round(.7 * $total),
+    round(.8 * $total),
+    round(.9 * $total),
+    $total
 );
 $j = 1;
 while ($row = $res->fetch_assoc()) {
@@ -141,6 +174,7 @@
         echo ($j++ * 10), "%...";
     }
 }
+echo "\n";

 $query = "SELECT * FROM bugdb_roadmap_link";
 $res = $mysqli->query($query);