You are here

public function FrxInclude::render in Forena Reports 7.3

Same name and namespace in other branches
  1. 6.2 plugins/FrxInclude.inc \FrxInclude::render()
  2. 7.2 plugins/FrxInclude.inc \FrxInclude::render()
  3. 7.4 renderers/FrxInclude.inc \FrxInclude::render()

Overrides FrxRenderer::render

File

renderers/FrxInclude.inc, line 9
FrxInclude Include a reference to another report as an asset. @author davidmetzler

Class

FrxInclude
@file FrxInclude Include a reference to another report as an asset. @author davidmetzler

Code

public function render() {

  // Get data from source
  $attributes = $this
    ->mergedAttributes();
  $output = '';

  // Determine data type
  $include = @$attributes['src'];

  // Reformat URL
  @(list($url, $query_str) = @explode('?', $include));
  $url = $this->teng
    ->replace($url, TRUE);
  $report_url = $url;
  $parts = @explode('/', $url);
  $file = @$parts[count($parts) - 1];
  $parts = explode('.', $file);

  // Determine file extention
  $ext = count($parts) > 1 ? $parts[count($parts) - 1] : '';
  $query = array();
  if ($query_str) {
    parse_str($query_str, $query);
    foreach ($query as $key => $value) {
      $query[$key] = $this->teng
        ->replace($value, TRUE);
    }
  }

  // Build URL
  $options = array(
    'query' => $query,
  );
  $url = url($url, $options);
  if ($this->format == 'web') {
    $output = $this
      ->render_reference($url, $ext, $attributes);
  }
  else {
    $output = forena_report_include(str_replace('reports/', '', $report_url), $query);
  }
  return $output;
}