Update data/params after Bugzilla 4.2.11 upgrade
[WebKit-https.git] / Websites / perf.webkit.org / public / admin / bug-trackers.php
1 <?php
2
3 include('../include/admin-header.php');
4
5 if ($db) {
6     if ($action == 'add') {
7         if ($db->insert_row('bug_trackers', 'tracker', array(
8             'name' => $_POST['name'], 'new_bug_url' => $_POST['new_bug_url']))) {
9             notice('Inserted the new bug tracker.');
10             regenerate_manifest();
11         } else
12             notice('Could not add the bug tracker.');
13     } else if ($action == 'update') {
14         if (update_field('bug_trackers', 'tracker', 'name') || update_field('bug_trackers', 'tracker', 'new_bug_url'))
15             regenerate_manifest();
16         else
17             notice('Invalid parameters.');
18     } else if ($action == 'associate') {
19         $tracker_id = intval($_POST['id']);
20         $db->query_and_get_affected_rows("DELETE FROM tracker_repositories WHERE tracrepo_tracker = $1", array($tracker_id));
21
22         $suceeded = TRUE;
23         $tracker_repositories = array_get($_POST, 'tracker_repositories');
24         if ($tracker_repositories) {
25             foreach ($tracker_repositories as $repository_id) {
26                 if (!$db->insert_row('tracker_repositories', 'tracrepo',
27                     array('tracker' => $tracker_id, 'repository' => $repository_id), NULL)) {
28                     $suceeded = TRUE;
29                     notice("Failed to associate repository $repository_id with tracker $tracker_id.");
30                 }
31             }
32         }
33         if ($suceeded) {
34             notice('Updated the association.');
35             regenerate_manifest();
36         }
37     }
38
39     function associated_repositories($row) {
40         global $db;
41
42         $tracker_repositories = $db->query_and_fetch_all('SELECT * FROM repositories LEFT OUTER JOIN tracker_repositories
43             ON tracrepo_repository = repository_id AND (tracrepo_tracker = $1 OR tracrepo_tracker IS NULL)
44             ORDER BY repository_name', array($row['tracker_id']));
45
46         $content = <<< END
47 <form method="POST"><input type="hidden" name="id" value="{$row['tracker_id']}">
48 END;
49
50         foreach ($tracker_repositories as $repository) {
51             $id = intval($repository['repository_id']);
52             $name = htmlspecialchars($repository['repository_name']);
53
54             $checked = $repository['tracrepo_tracker'] ? ' checked' : '';
55             $content .= "<label><input type=\"checkbox\" name=\"tracker_repositories[]\" value=\"{$id}\"$checked>$name</label>";
56         }
57
58         $content .= <<< END
59 <button type="submit" name="action" value="associate">Save</button></form>
60 END;
61         return array($content);
62     }
63
64     $page = new AdministrativePage($db, 'bug_trackers', 'tracker', array(
65         'name' => array('editing_mode' => 'string'),
66         'new_bug_url' => array('editing_mode' => 'text', 'label' => 'New Bug URL ($title, $description)'),
67         'Associated repositories' => array('custom' => function ($row) { return associated_repositories($row); }),
68     ));
69
70     $page->render_table('name');
71     $page->render_form_to_add('New Bug Tracker');
72
73 }
74
75 include('../include/admin-footer.php');
76
77 ?>