public function RendererBase::columns in Forena Reports 7.5
Extract a list of columns from the data context.
Parameters
$xml SimpleXMLElement The xml data:
string $path:
Return value
multitype:|multitype:string mixed
5 calls to RendererBase::columns()
- FrxCrosstab::generate in src/
Renderer/ FrxCrosstab.php - Generate the template from the configuration.
- FrxFieldTable::generate in src/
Renderer/ FrxFieldTable.php - Generate the template from the configuration.
- FrxSVGGraph::generate in src/
Renderer/ FrxSVGGraph.php - Generate the template from the configuration.
- FrxTable::generate in src/
Renderer/ FrxTable.php - Generate the template from the configuration.
- RendererBase::generate in src/
Renderer/ RendererBase.php - Generate the template from the configuration.
File
- src/
Renderer/ RendererBase.php, line 684 - FrxRenderer.php Base class for Frx custom Renderer @author davidmetzler
Class
Namespace
Drupal\forena\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;
}