function main($path) { if (count($path) > 1) { exit_with_error('InvalidRequest'); } $db = new Database(); if (!$db->connect()) { exit_with_error('DatabaseConnectionFailure'); } $task_id = array_get($_GET, 'task'); $query = array(); if ($task_id) { $triggerable = find_triggerable_for_task($db, $task_id); if (!$triggerable) { exit_with_error('TriggerableNotFoundForTask', array('task' => $task_id)); } $query['id'] = $triggerable['id']; } $id_to_triggerable = array(); foreach ($db->select_rows('build_triggerables', 'triggerable', $query) as $row) { $id = $row['triggerable_id']; $repositories = array(); $id_to_triggerable[$id] = array('id' => $id, 'name' => $row['triggerable_name'], 'acceptedRepositories' => &$repositories); } foreach ($db->select_rows('triggerable_repositories', 'trigrepo', array()) as $row) { $triggerable = array_get($id_to_triggerable, $row['trigrepo_triggerable']); if ($triggerable) { array_push($triggerable['acceptedRepositories'], $row['trigrepo_repository']); } } exit_with_success(array('triggerables' => array_values($id_to_triggerable))); }
function main() { $db = connect(); $data = ensure_privileged_api_data_and_token_or_slave($db); $author = remote_user_name($data); $task_id = array_get($data, 'task'); $name = array_get($data, 'name'); $root_sets = array_get($data, 'rootSets'); $repetition_count = intval(array_get($data, 'repetitionCount', 1)); if (!$name) { exit_with_error('MissingName'); } if (!$root_sets) { exit_with_error('MissingRootSets'); } if ($repetition_count < 1) { exit_with_error('InvalidRepetitionCount', array('repetitionCount' => $repetition_count)); } $task = $db->select_first_row('analysis_tasks', 'task', array('id' => $task_id)); if (!$task) { exit_with_error('InvalidTask', array('task' => $task_id)); } $triggerable = find_triggerable_for_task($db, $task_id); if (!$triggerable) { exit_with_error('TriggerableNotFoundForTask', array('task' => $task_id)); } $commit_sets = commit_sets_from_root_sets($db, $root_sets); $db->begin_transaction(); $root_set_id_list = array(); foreach ($commit_sets as $commit_list) { $root_set_id = $db->insert_row('root_sets', 'rootset', array()); foreach ($commit_list as $commit) { $db->insert_row('roots', 'root', array('set' => $root_set_id, 'commit' => $commit), 'commit'); } array_push($root_set_id_list, $root_set_id); } $group_id = $db->insert_row('analysis_test_groups', 'testgroup', array('task' => $task['task_id'], 'name' => $name, 'author' => $author)); $order = 0; for ($i = 0; $i < $repetition_count; $i++) { foreach ($root_set_id_list as $root_set_id) { $db->insert_row('build_requests', 'request', array('triggerable' => $triggerable['id'], 'platform' => $triggerable['platform'], 'test' => $triggerable['test'], 'group' => $group_id, 'order' => $order, 'root_set' => $root_set_id)); $order++; } } $db->commit_transaction(); exit_with_success(array('testGroupId' => $group_id)); }