haikuwebkit/Websites/perf.webkit.org/public/privileged-api/associate-bug.php

47 lines
1.8 KiB
PHP

<?php
require_once('../include/json-header.php');
function main() {
$data = ensure_privileged_api_data_and_token();
$analysis_task_id = array_get($data, 'task');
$bug_tracker_id = array_get($data, 'bugTracker');
$bug_number = array_get($data, 'number');
$bug_id = array_get($data, 'bugToDelete');
$should_delete = array_get($data, 'shouldDelete');
$db = connect();
$db->begin_transaction();
if ($bug_id) { // V2 compatibility
require_format('BugToDelete', $bug_id, '/^\d+$/');
$count = $db->query_and_get_affected_rows("DELETE FROM bugs WHERE bug_id = $1", array($bug_id));
if ($count != 1) {
$db->rollback_transaction();
exit_with_error('UnexpectedNumberOfAffectedRows', array('affectedRows' => $count));
}
} else {
require_format('AnalysisTask', $analysis_task_id, '/^\d+$/');
require_format('BugTracker', $bug_tracker_id, '/^\d+$/');
require_format('BugNumber', $bug_number, '/^\d+$/');
if ($should_delete) { // V3
$count = $db->query_and_get_affected_rows("DELETE FROM bugs WHERE bug_task = $1 AND bug_tracker = $2 AND bug_number = $3",
array($analysis_task_id, $bug_tracker_id, $bug_number));
if ($count < 1) { // FIXME: We should forbid duplicate bugs (same bug number on same tracker for same task)
$db->rollback_transaction();
exit_with_error('UnexpectedNumberOfAffectedRows', array('affectedRows' => $count));
}
} else {
$bug_id = $db->insert_row('bugs', 'bug', array('task' => $analysis_task_id, 'tracker' => $bug_tracker_id, 'number' => $bug_number));
}
}
$db->commit_transaction();
exit_with_success(array('bugId' => $bug_id));
}
main();
?>