public parseDomain ( SimpleXMLElement $xml, array &$ret ) : void | ||
$xml | SimpleXMLElement | The XML data of the component's configuration area |
$ret | array | |
return | void |
public function parseDomain(SimpleXMLElement $xml, array &$ret)
{
// Initialise
$ret['views'] = array();
// Parse view configuration
$viewData = $xml->xpath('view');
// Sanity check
if (empty($viewData)) {
return;
}
foreach ($viewData as $aView) {
$key = (string) $aView['name'];
// Parse ACL options
$ret['views'][$key]['acl'] = array();
$aclData = $aView->xpath('acl/task');
if (!empty($aclData)) {
foreach ($aclData as $acl) {
$k = (string) $acl['name'];
$ret['views'][$key]['acl'][$k] = (string) $acl;
}
}
// Parse taskmap
$ret['views'][$key]['taskmap'] = array();
$taskmapData = $aView->xpath('taskmap/task');
if (!empty($taskmapData)) {
foreach ($taskmapData as $map) {
$k = (string) $map['name'];
$ret['views'][$key]['taskmap'][$k] = (string) $map;
}
}
// Parse controller configuration
$ret['views'][$key]['config'] = array();
$optionData = $aView->xpath('config/option');
if (!empty($optionData)) {
foreach ($optionData as $option) {
$k = (string) $option['name'];
$ret['views'][$key]['config'][$k] = (string) $option;
}
}
// Parse the toolbar
$ret['views'][$key]['toolbar'] = array();
$toolBars = $aView->xpath('toolbar');
if (!empty($toolBars)) {
foreach ($toolBars as $toolBar) {
$taskName = isset($toolBar['task']) ? (string) $toolBar['task'] : '*';
// If a toolbar title is specified, create a title element.
if (isset($toolBar['title'])) {
$ret['views'][$key]['toolbar'][$taskName]['title'] = array('value' => (string) $toolBar['title']);
}
// Parse the toolbar buttons data
$toolbarData = $toolBar->xpath('button');
if (!empty($toolbarData)) {
foreach ($toolbarData as $button) {
$k = (string) $button['type'];
$ret['views'][$key]['toolbar'][$taskName][$k] = current($button->attributes());
$ret['views'][$key]['toolbar'][$taskName][$k]['value'] = (string) $button;
}
}
}
}
}
}