protected function processPasswordSchemes($schemeArrays) { $disabledSchemes = array(); $processedSchemes = array(); foreach ($schemeArrays as $schemeArray) { $schemeArray = vB_XML_Parser::getList($schemeArray['scheme']); foreach ($schemeArray as $scheme) { //if its disbabled, just mark it and move on if (!empty($scheme['disabled'])) { $disabledSchemes[] = $scheme['name']; continue; } //makes sure we don't pick up any stray attributes from the xml file. $values['priority'] = isset($scheme['priority']) ? $scheme['priority'] : null; //duplicate schemes are not allowed, wether in one file or in many if (isset($processedSchemes[$scheme['name']])) { throw new vB_Exception_Api(array('error_x', 'Duplicate scheme ' . $scheme['name'])); } $processedSchemes[$scheme['name']] = $values; } } //anything that disabled should be treated as if we never saw it. foreach ($disabledSchemes as $disabled) { unset($processedSchemes[$disabled]); } return $processedSchemes; }