public function RendererBase::columns in Forena Reports 8
Extract a list of columns from the data context.
Parameters
$xml \SimpleXMLElement The xml data:
string $path:
Return value
array columns or fields contained in the XML.
1 call to RendererBase::columns()
- RendererBase::generate in src/
FrxPlugin/ Renderer/ RendererBase.php - Generate the template from the configuration.
File
- src/
FrxPlugin/ Renderer/ RendererBase.php, line 679 - FrxRenderer.php Base class for FrxAPI custom Renderer @author davidmetzler
Class
- RendererBase
- Crosstab Renderer
Namespace
Drupal\forena\FrxPlugin\RendererCode
public function columns($xml, $path = '/*/*') {
//create an array of columns
if (!is_object($xml)) {
return array();
}
// Use xpath if possible otherwise iterate.
if (method_exists($xml, 'xpath')) {
$rows = $xml
->xpath($path);
}
else {
$rows = $xml;
}
$column_array = array();
$numeric_columns = array();
foreach ($rows as $columns) {
foreach ($columns as $name => $value) {
$label = str_replace('_', ' ', $name);
$column_array[$name] = $label;
if (is_numeric((string) $value)) {
$numeric_columns[$name] = $label;
}
else {
if (isset($numeric_columns[$name])) {
unset($numeric_columns[$name]);
}
}
}
if (is_object($xml) && method_exists($xml, 'attributes')) {
foreach ($xml
->attributes() as $name => $value) {
$column_array['@' . $name] = '@' . $name;
}
}
}
$this->columns = $column_array;
$this->numeric_columns = $numeric_columns;
return $column_array;
}