/** * Run Calculation * * Local function * * @uses modules/Reports/Calculations.php file, echoXMLHttpRequest modfunc * * @example echo _runCalc( $_REQUEST['calculation'][ $row ][ $col ], $_REQUEST['breakdown'][ $row ][ $col ], $_REQUEST['graph'][ $row ][ $col ] ); * * @param string $calculation_id Calculation ID * @param string $breakdown Breakdown column * @param string $graph Graph column * * @return string Calculation */ function _runCalc($calculation_id, $breakdown, $graph) { global $_ROSARIO, $_runCalc_start_REQUEST; static $num, $_runCalc_num; if (!isset($num)) { $num = 0; } if (!isset($_runCalc_num)) { $_runCalc_num = $num; } $_runCalc_start_REQUEST = $_REQUEST; require_once 'modules/Reports/includes/ReportsCalculations.fnc.php'; if (!isset($_ROSARIO['Calc' . $calculation_id])) { $url_RET = DBGet(DBQuery("SELECT URL,TITLE\n\t\t\tFROM SAVED_CALCULATIONS\n\t\t\tWHERE ID='" . $calculation_id . "'"), array('URL' => '_makeURL')); $_ROSARIO['CalcTitle' . $calculation_id] = $url_RET[1]['URL']; /*$url = $url_RET[1]['URL']; $url = urldecode( $url ); $vars = mb_substr( $url, ( mb_strpos( $url, '?' ) + 1 ) ); $modname = mb_substr( $url, 0, mb_strpos( $url, '?' ) ); $vars = str_replace( '&', '&', $vars ); $vars = explode( '&', $vars ); $_REQUEST = array(); foreach ( (array) $vars as $code ) { $equals = mb_strpos( $code, '=' ); if ( mb_strpos( $code, '[' ) !== false ) { $code = "\$_REQUEST[" . preg_replace( '/([^]])\[/', '\1][', mb_substr( $code, 0, $equals ) ) . "='" . mb_substr( $code, $equals + 1 ) . "';"; } else { $code = "\$_REQUEST['" . mb_substr( $code, 0, $equals ) . "']='" . mb_substr( $code, $equals + 1 ) . "';"; } eval( $code ); }*/ $_ROSARIO['Calc' . $calculation_id] = $_REQUEST; } else { $_REQUEST = $_ROSARIO['Calc' . $calculation_id]; } if ($breakdown) { $_REQUEST['breakdown'] = $breakdown; } /*if ( $_REQUEST['breakdown'] == 'CUSTOM_44' ) // RosarioSIS? { for ( $i = 1; $i <= 15; $i++ ) { $_REQUEST['screen'][ $i ]['_search_all_schools'] = 'Y'; } }*/ $_REQUEST['graph'] = $graph; $num = $_runCalc_num; // So Calculations.php doesn't include the functions within this function. /*$_REQUEST['modfunc'] = 'Reports/CalculationsReports.php'; $_REQUEST['modfunc'] = 'echoXMLHttpRequest'; $return = require 'modules/Reports/Calculations.php';*/ $query = _makeQuery(isset($_POST['query']) ? $_POST['query'] : $_REQUEST['query']); $return = _getAJAXResults($query, 'echoXMLHttpRequest'); $_REQUEST = $_runCalc_start_REQUEST; return $return; }
echo $results; echo '</results>'; exit; } elseif ($_REQUEST['modfunc'] === 'saveXMLHttpRequest') { $_REQUEST['query'] = $_POST['query']; $location = PreparePHP_SELF(); DBQuery("INSERT INTO SAVED_CALCULATIONS (ID,TITLE,URL)\n\t\tvalues(\n\t\t\t" . db_seq_nextval('SAVED_CALCULATIONS_SEQ') . ",\n\t\t\t'" . $_REQUEST['calc_title'] . "',\n\t\t\t'" . $location . "'\n\t\t)"); header("Content-Type: text/xml\n\n"); echo '<?xml version="1.0" encoding="UTF-8"?>'; echo '<results>'; // Do NOT translate 'Saved', used by assets/ajax.js. echo '<result><id>~</id><title>' . 'Saved' . '</title></result>'; echo '</results>'; exit; } elseif ($_REQUEST['modfunc'] === 'echoXMLHttpRequest') { $query = _makeQuery($_POST['query']); //print_r($_REQUEST); /*echo '<br />EVAL QUERY: '. echo '<br />RESULTS: '.$result; echo '<br />AVG PRES: '._average(_getResults('present','2')); echo '<PRE>'.str_replace('<','<',str_replace('>','>',$query)).'</PRE>';*/ $results = _getAJAXResults($query, $_REQUEST['modfunc']); return $results; } elseif ($_REQUEST['modfunc'] === 'remove') { if (!isset($_REQUEST['delete_ok']) && !isset($_REQUEST['delete_cancel'])) { DrawHeader(ProgramTitle()); } if (DeletePrompt(dgettext('Reports', 'Saved Equation'))) { DBQuery("DELETE FROM SAVED_CALCULATIONS\n\t\t\tWHERE ID='" . $_REQUEST['id'] . "'"); unset($_REQUEST['modfunc']); unset($_SESSION['_REQUEST_vars']['modfunc']);