public function FrxReport::parse_ids in Forena Reports 7.4
Same name and namespace in other branches
- 6.2 FrxReport.inc \FrxReport::parse_ids()
- 6 FrxReport.inc \FrxReport::parse_ids()
- 7 FrxReport.inc \FrxReport::parse_ids()
- 7.2 FrxReport.inc \FrxReport::parse_ids()
- 7.3 FrxReport.inc \FrxReport::parse_ids()
Make sure all xml elements have ids
1 call to FrxReport::parse_ids()
- FrxReport::get_attributes_by_id in ./
FrxReport.inc - Get the attributes by
File
- ./
FrxReport.inc, line 537 - Basic report provider. Controls the rendering of the report.
Class
Code
public function parse_ids() {
$i = 0;
if ($this->rpt_xml) {
$this->rpt_xml
->registerXPathNamespace('frx', FRX_NS);
$frx_attributes = array();
$frx_nodes = $this->rpt_xml
->xpath('body//*[@frx:*]');
if ($frx_nodes) {
foreach ($frx_nodes as $node) {
$attr_nodes = $node
->attributes(FRX_NS);
if ($attr_nodes) {
// Make sure every element has an id
$i++;
$id = 'forena-' . $i;
if (!isset($node['id'])) {
$node
->addAttribute('id', $id);
}
else {
if (strpos((string) $node['id'], 'forena-') === 0) {
// Reset the id to the numerically generated one
$node['id'] = $id;
}
else {
// Use the id of the element
$id = (string) $node['id'];
}
}
// Save away the frx attributes in case we need them later.
$attr_nodes = $node
->attributes(FRX_NS);
$attrs = array();
if ($attr_nodes) {
foreach ($attr_nodes as $key => $value) {
$attrs[$key] = (string) $value;
}
}
// Save away the attributes
$frx_attributes[$id] = $attrs;
}
}
}
$this->frx_attributes = $frx_attributes;
}
}