private function parseRuleReferenceNode(RuleSet $ruleSet, \SimpleXMLElement $ruleNode)
{
$ref = (string) $ruleNode['ref'];
$fileName = substr($ref, 0, strpos($ref, '.xml/') + 4);
$fileName = $this->createRuleSetFileName($fileName);
$ruleName = substr($ref, strpos($ref, '.xml/') + 5);
$ruleSetFactory = new RuleSetFactory();
$ruleSetRef = $ruleSetFactory->createSingleRuleSet($fileName);
$rule = $ruleSetRef->getRuleByName($ruleName);
if (trim($ruleNode['name']) !== '') {
$rule->setName((string) $ruleNode['name']);
}
if (trim($ruleNode['message']) !== '') {
$rule->setMessage((string) $ruleNode['message']);
}
if (trim($ruleNode['externalInfoUrl']) !== '') {
$rule->setExternalInfoUrl((string) $ruleNode['externalInfoUrl']);
}
foreach ($ruleNode->children() as $node) {
if ($node->getName() === 'description') {
$rule->setDescription((string) $node);
} elseif ($node->getName() === 'example') {
$rule->addExample((string) $node);
} elseif ($node->getName() === 'priority') {
$rule->setPriority((int) $node);
} elseif ($node->getName() === 'properties') {
$this->parsePropertiesNode($rule, $node);
}
}
if ($rule->getPriority() <= $this->minimumPriority) {
$ruleSet->addRule($rule);
}
}