3 include('../include/admin-header.php');
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();
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();
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));
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)) {
29 notice("Failed to associate repository $repository_id with tracker $tracker_id.");
34 notice('Updated the association.');
35 regenerate_manifest();
39 function associated_repositories($row) {
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']));
47 <form method="POST"><input type="hidden" name="id" value="{$row['tracker_id']}">
50 foreach ($tracker_repositories as $repository) {
51 $id = intval($repository['repository_id']);
52 $name = htmlspecialchars($repository['repository_name']);
54 $checked = $repository['tracrepo_tracker'] ? ' checked' : '';
55 $content .= "<label><input type=\"checkbox\" name=\"tracker_repositories[]\" value=\"{$id}\"$checked>$name</label>";
59 <button type="submit" name="action" value="associate">Save</button></form>
61 return array($content);
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); }),
70 $page->render_table('name');
71 $page->render_form_to_add('New Bug Tracker');
75 include('../include/admin-footer.php');