diff --git a/cycle.php b/cycle.php index fc996d1..d9fbafb 100644 --- a/cycle.php +++ b/cycle.php @@ -34,6 +34,7 @@ include_once('./lib/utility.php'); include_once('./lib/api_data_source.php'); include_once('./plugins/cycle/functions.php'); +include_once('./plugins/cycle/cycle_helpers.php'); set_default_action(); @@ -63,18 +64,16 @@ function cycle_graphs() { global $id, $graph_id, $next_graph_id, $prev_graph_id; $tree_list = get_allowed_trees(); - $legend = get_request_var('legend'); - $tree_id = get_request_var('tree_id'); - $leaf_id = get_request_var('leaf_id'); - $graphpp = get_request_var('graphs'); - $cols = get_request_var('cols'); - $rfilter = get_request_var('rfilter'); - $id = get_request_var('id'); - $width = get_request_var('width'); - $height = get_request_var('height'); - - if (empty($tree_id)) $tree_id = db_fetch_cell('SELECT id FROM graph_tree ORDER BY name LIMIT 1'); - if (empty($id)) $id = -1; + $request = cycle_get_request_context(); + $legend = $request['legend']; + $tree_id = $request['tree_id']; + $leaf_id = $request['leaf_id']; + $graphpp = $request['graphs']; + $cols = $request['cols']; + $rfilter = $request['rfilter']; + $id = $request['id']; + $width = $request['width']; + $height = $request['height']; /* get the start and end times for the graph */ $timespan = array(); @@ -154,26 +153,16 @@ function cycle() { } $tree_list = get_allowed_trees(); - $legend = get_request_var('legend'); - $tree_id = get_request_var('tree_id'); - $leaf_id = get_request_var('leaf_id'); - $graphpp = get_request_var('graphs'); - $cols = get_request_var('cols'); - $rfilter = get_request_var('rfilter'); - $id = get_request_var('id'); - $width = get_request_var('width'); - $height = get_request_var('height'); - - if (empty($tree_id)) { - $tree_id = db_fetch_cell('SELECT id - FROM graph_tree - ORDER BY name - LIMIT 1'); - } - - if (empty($id)) { - $id = -1; - } + $request = cycle_get_request_context(); + $legend = $request['legend']; + $tree_id = $request['tree_id']; + $leaf_id = $request['leaf_id']; + $graphpp = $request['graphs']; + $cols = $request['cols']; + $rfilter = $request['rfilter']; + $id = $request['id']; + $width = $request['width']; + $height = $request['height']; /* get the start and end times for the graph */ $timespan = array(); @@ -401,4 +390,3 @@ function cycle() { bottom_footer(); } - diff --git a/cycle_helpers.php b/cycle_helpers.php new file mode 100644 index 0000000..014b1dd --- /dev/null +++ b/cycle_helpers.php @@ -0,0 +1,45 @@ + get_request_var('legend'), + 'tree_id' => get_request_var('tree_id'), + 'leaf_id' => get_request_var('leaf_id'), + 'graphs' => get_request_var('graphs'), + 'cols' => get_request_var('cols'), + 'rfilter' => get_request_var('rfilter'), + 'id' => get_request_var('id'), + 'width' => get_request_var('width'), + 'height' => get_request_var('height') + ); + + $context['tree_id'] = cycle_get_default_tree_id($context['tree_id']); + $context['id'] = (empty($context['id']) ? -1 : $context['id']); + + return $context; + } +} diff --git a/tests/test_request_context.php b/tests/test_request_context.php new file mode 100644 index 0000000..80c1bd6 --- /dev/null +++ b/tests/test_request_context.php @@ -0,0 +1,86 @@ + 'true', + 'tree_id' => '', + 'leaf_id' => 19, + 'graphs' => 8, + 'cols' => 3, + 'rfilter' => 'prod', + 'id' => '', + 'width' => 500, + 'height' => 200 +); +$db_queries = array(); + +$context = cycle_get_request_context(); + +assert_true('empty tree_id falls back to first tree query', $context['tree_id'] === 777); +assert_true('empty id normalizes to -1', $context['id'] === -1); +assert_true('legend is preserved', $context['legend'] === 'true'); +assert_true('fallback query executes once', count($db_queries) === 1); + +$request_values['tree_id'] = 123; +$request_values['id'] = 456; +$db_queries = array(); + +$context = cycle_get_request_context(); + +assert_true('provided tree_id is preserved', $context['tree_id'] === 123); +assert_true('provided id is preserved', $context['id'] === 456); +assert_true('no fallback query when tree_id exists', count($db_queries) === 0); + +$cycle_source = file_get_contents(__DIR__ . '/../cycle.php'); +assert_true('cycle.php is readable', $cycle_source !== false); +$cycle_source = ($cycle_source === false ? '' : $cycle_source); + +assert_true( + 'cycle.php uses shared request context helper', + preg_match('/cycle_get_request_context\\s*\\(/', $cycle_source) === 1 +); + +echo "\n"; +echo "Results: $pass passed, $fail failed\n"; + +exit($fail > 0 ? 1 : 0);