You are here

public function FrxReport::format in Forena Reports 7

Same name and namespace in other branches
  1. 6.2 FrxReport.inc \FrxReport::format()
  2. 6 FrxReport.inc \FrxReport::format()
  3. 7.2 FrxReport.inc \FrxReport::format()
  4. 7.3 FrxReport.inc \FrxReport::format()
  5. 7.4 FrxReport.inc \FrxReport::format()

File

./FrxReport.inc, line 236
Basic report provider. Controls the rendering of the report.

Class

FrxReport

Code

public function format($value, $key, $data) {

  // Determine if there is a field overide entry
  $default = '';
  $link = '';
  $format = '';
  $format_str = '';
  $target = '';
  if ($this->fields) {
    $path = 'frx:field[@id="' . $key . '"]';
    $formatters = $this->fields
      ->xpath($path);
    if ($formatters) {
      foreach ($formatters as $formatter) {
        if (isset($formatter['block']) && (string) $formatter['block'] == $this->block || !(string) $formatter['block']) {

          //@TODO: Replace the default extraction with something that will get sub elements of the string
          $default = (string) $formatter;
          $link = (string) $formatter['link'];
          $format = (string) $formatter['format'];
          $format_str = (string) $formatter['format-string'];
          $target = (string) $formatter['target'];
        }
      }
    }
  }
  if ($format) {
    $value = forena_format_data($value, $format, $format_str);
  }

  // Default if specified
  if (!$value && $default) {
    $value = $default;
  }
  if ($link) {
    $link = $this->teng
      ->replace($link, $data, TRUE);
    @(list($url, $query) = explode('?', $link));
    $data = array();
    parse_str($query, $data);
    $value = l(htmlspecialchars_decode($value), $url, array(
      'query' => $data,
      'attributes' => array(
        'target' => $target,
      ),
    ));
  }
  return $value;
}