/**
* @param $databaseConfig
* @param $masterParams
* @return array
*/
private function mapSlavesConfig(Zend_Config $databaseConfig, $masterParams)
{
$slaves = $databaseConfig->get('slaves');
if (!$slaves || !$slaves instanceof Zend_Config || $slaves->count() === 0) {
$slaves = array();
}
$slavesParams = array();
foreach ($slaves as $slaveId) {
$slaveConfig = $databaseConfig->get($slaveId);
if (!$slaveConfig || !$slaveConfig instanceof Zend_Config) {
$this->logger->warning(sprintf("Listed slave '%s' has no configuration. Skipping candidate slave.", $slaveId));
continue;
}
$slaveParams = $this->getParamsFromConfig($slaveConfig);
if ($slaveParams['driver'] !== $masterParams['driver']) {
$this->logger->warning(sprintf("Listed slave '%s' has different driver ('%s') than master ('%s'). This is not supported. " . 'Skipping candidate slave.', $slaveId, $slaveParams['driver'], $masterParams['driver']));
continue;
}
$slavesParams[] = $slaveParams;
}
if (empty($slavesParams)) {
$this->logger->warning('No (properly) configured slaves, using master as slave.');
$slavesParams[] = $masterParams;
}
return $slavesParams;
}