You are here

function _forena_filter_process in Forena Reports 7

Same name and namespace in other branches
  1. 8 forena.module \_forena_filter_process()
  2. 6.2 forena.module \_forena_filter_process()
  3. 6 forena.module \_forena_filter_process()
  4. 7.5 forena.module \_forena_filter_process()
  5. 7.2 forena.module \_forena_filter_process()
  6. 7.3 forena.module \_forena_filter_process()
  7. 7.4 forena.module \_forena_filter_process()

Process tag replacement for xml filters

1 string reference to '_forena_filter_process'
forena_filter_info in ./forena.module
Implememntation of hook_filter

File

./forena.module, line 600

Code

function _forena_filter_process($text = '') {
  require_once 'forena.admin.inc';

  // initial Parameters
  $in_parms = array();
  $in_parms = array_merge((array) $_GET, (array) $parms);

  // Find the instances of [xmlreport:view,
  if (preg_match_all("/\\[report?:?([^\\]]+)\\]/i", $text, $match)) {
    foreach ($match[1] as $idx => $value) {
      $parms = array();

      // Separate view from parmeters
      list($report_name, $parmsStr) = explode(':', $value);

      // Get any static parmeters
      $pairs = split(',', $parmsStr);
      if ($pairs) {
        foreach ($pairs as $pair) {
          list($key, $value) = explode('=', $pair);
          $parms[$key] = $value;
        }
      }
      $parms = array_merge($parms, $in_parms);

      // Debug the result
      $output = '';
      $r = forena_get_report($report_name, $in_parms);
      if ($r) {
        $output .= $r
          ->render(null);
      }

      // Finally replace the parameters
      $find[] = $match[0][$idx];
      $replace[] = $output;
    }
    return str_replace($find, $replace, $text);
  }

  // If we didn't find anything return the text.
  return $text;
}