Software: Apache/2.2.3 (CentOS). PHP/5.1.6 uname -a: Linux mx-ll-110-164-51-230.static.3bb.co.th 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44 uid=48(apache) gid=48(apache) groups=48(apache) Safe-mode: OFF (not secure) /var/www/html/phpMyAdmin/libraries/ drwxr-xr-x |
Viewing file: chart.lib.php (8.02 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) | <?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Chart functions used to generate various types of charts. * @package phpMyAdmin */ /** * */ define('ERR_NO_GD', 0); define('ERR_NO_JSON', 1); require_once './libraries/chart/pma_pchart_pie.php'; require_once './libraries/chart/pma_pchart_single_bar.php'; require_once './libraries/chart/pma_pchart_multi_bar.php'; require_once './libraries/chart/pma_pchart_stacked_bar.php'; require_once './libraries/chart/pma_pchart_single_line.php'; require_once './libraries/chart/pma_pchart_multi_line.php'; require_once './libraries/chart/pma_pchart_single_radar.php'; require_once './libraries/chart/pma_pchart_multi_radar.php'; /** * Formats a chart for the status page. * @param array $data data for the status chart * @return string HTML and JS code for the chart */ function PMA_chart_status($data) { // format keys which will be shown in the chart $chartData = array(); foreach($data as $dataKey => $dataValue) { $key = ucwords(str_replace(array('Com_', '_'), array('', ' '), $dataKey)); $value = (int)$dataValue; $chartData[$key] = $value; } $chart = new PMA_pChart_Pie( $chartData, array('titleText' => __('Query statistics')) ); $chartCode = $chart->toString(); PMA_handle_chart_err($chart->getErrors()); echo $chartCode; } /** * Formats a chart for the profiling page. * @param array $data data for the status chart * @return string HTML and JS code for the chart */ function PMA_chart_profiling($data) { $chartData = array(); foreach($data as $dataValue) { $value = (int)($dataValue['Duration'] * 1000000); $key = ucwords($dataValue['Status']); $chartData[$key] = $value; } $chart = new PMA_pChart_Pie( $chartData, array('titleText' => __('Query execution time comparison (in microseconds)')) ); $chartCode = $chart->toString(); PMA_handle_chart_err($chart->getErrors()); echo $chartCode; } /** * Formats a chart for the query results page. * @param array $data data for the status chart * @param array $chartSettings settings used to generate the chart * @return string HTML and JS code for the chart */ function PMA_chart_results($data, &$chartSettings) { $chartData = array(); $chart = null; // set default title if not already set if (empty($chartSettings['titleText'])) { $chartSettings['titleText'] = __('Query results'); } // set default type if not already set if (empty($chartSettings['type'])) { $chartSettings['type'] = 'bar'; } // set default type if not already set if (empty($chartSettings['continuous'])) { $chartSettings['continuous'] = 'off'; } // set default bar type if needed if ($chartSettings['type'] == 'bar' && empty($chartSettings['barType'])) { $chartSettings['barType'] = 'stacked'; } // default for legend $chartSettings['legend'] = false; // default for muti series $chartSettings['multi'] = false; if (!isset($data[0])) { // empty data return __('No data found for the chart.'); } if (count($data[0]) == 1 || count($data[0]) == 2) { // One or two columns in every row. // This data is suitable for a simple bar chart. if ($chartSettings['type'] == 'pie') { // loop through the rows, data for pie chart has to be formated // in a different way then in other charts. foreach ($data as $rowKey => $row) { $values = array_values($row); if (count($row) == 1) { $chartData[$rowKey] = $values[0]; } else { $chartData[$values[1]] = $values[0]; } } $chartSettings['legend'] = true; $chart = new PMA_pChart_pie($chartData, $chartSettings); } else { // loop through the rows foreach ($data as $rowKey => $row) { // loop through the columns in the row foreach ($row as $valueKey => $value) { $chartData[$valueKey][] = $value; } // if only one column, we need to add // placeholder data for x axis if (count($row) == 1) { $chartData[''][] = $rowKey; } } switch ($chartSettings['type']) { case 'bar': default: $chart = new PMA_pChart_single_bar($chartData, $chartSettings); break; case 'line': $chart = new PMA_pChart_single_line($chartData, $chartSettings); break; case 'radar': $chart = new PMA_pChart_single_radar($chartData, $chartSettings); break; } } } else if (count($data[0]) == 3) { // Three columns (x axis, y axis, series) in every row. // This data is suitable for a stacked bar chart. $chartSettings['multi'] = true; $keys = array_keys($data[0]); $yAxisKey = $keys[0]; $xAxisKey = $keys[1]; $seriesKey = $keys[2]; // get all the series labels $seriesLabels = array(); foreach ($data as $row) { $seriesLabels[] = $row[$seriesKey]; } $seriesLabels = array_unique($seriesLabels); // loop through the rows $currentXLabel = $data[0][$xAxisKey]; foreach ($data as $row) { // save the label // use the same value as the key and the value to get rid of duplicate results $chartData[$xAxisKey][$row[$xAxisKey]] = $row[$xAxisKey]; // make sure to set value to every serie $currentSeriesLabel = (string)$row[$seriesKey]; foreach ($seriesLabels as $seriesLabelsValue) { if ($currentSeriesLabel == $seriesLabelsValue) { // the value os for this serie $chartData[$yAxisKey][$seriesLabelsValue][$row[$xAxisKey]] = (int)$row[$yAxisKey]; } else if (!isset($chartData[$yAxisKey][$seriesLabelsValue][$row[$xAxisKey]])) { // if the value for this serie is not set, set it to 0 $chartData[$yAxisKey][$seriesLabelsValue][$row[$xAxisKey]] = 0; } } } $chartSettings['legend'] = true; // determine the chart type switch ($chartSettings['type']) { case 'bar': default: // determine the bar chart type switch ($chartSettings['barType']) { case 'stacked': default: $chart = new PMA_pChart_stacked_bar($chartData, $chartSettings); break; case 'multi': $chart = new PMA_pChart_multi_bar($chartData, $chartSettings); break; } break; case 'line': $chart = new PMA_pChart_multi_line($chartData, $chartSettings); break; case 'radar': $chart = new PMA_pChart_multi_radar($chartData, $chartSettings); break; } } else { // unknown data format return ''; } $chartCode = $chart->toString(); $chartSettings = $chart->getSettings(); $chartErrors = $chart->getErrors(); PMA_handle_chart_err($chartErrors); return $chartCode; } /** * Simple handler of chart errors. * @param array $errors all occured errors */ function PMA_handle_chart_err($errors) { if (in_array(ERR_NO_GD, $errors)) { PMA_warnMissingExtension('GD', false, __('GD extension is needed for charts.')); } else if (in_array(ERR_NO_JSON, $errors)) { PMA_warnMissingExtension('JSON', false, __('JSON encoder is needed for chart tooltips.')); } } ?> |
:: Command execute :: | |
:: Shadow's tricks :D :: | |
Useful Commands
|
:: Preddy's tricks :D :: | |
Php Safe-Mode Bypass (Read Files)
|
--[ c999shell v. 1.0 pre-release build #16 Modded by Shadow & Preddy | RootShell Security Group | r57 c99 shell | Generation time: 0.0062 ]-- |