/**
 * 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;
}
Пример #2
0
    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('<','&lt;',str_replace('>','&gt;',$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']);
        unset($_SESSION['_REQUEST_vars']['id']);
    }
}
// Update Equations.
if ($_REQUEST['modfunc'] === 'update_equations' && isset($_REQUEST['values']) && isset($_POST['values']) && AllowEdit()) {
    foreach ((array) $_REQUEST['values'] as $id => $columns) {