/** * Updates the mapping in localconf.php according to form input values. * * @param array $data * @param t3lib_install $instObj * @return void * @api */ public function updateMapping(array $data, t3lib_install $instObj) { $newMapping = $this->mapping; foreach ($data['tables'] as $table => $newName) { $newName = trim($newName); if ($newName && $newName !== $table) { if (!isset($newMapping[$table])) { $newMapping[$table] = array(); } $newMapping[$table]['mapTableName'] = $newName; } if (isset($data['fields'][$table])) { foreach ($data['fields'][$table] as $field => $newName) { $newName = trim($newName); if ($newName && $newName !== $field) { if (!isset($newMapping[$table])) { $newMapping[$table] = array(); } if (!isset($newMapping[$table]['mapFieldNames'])) { $newMapping[$table]['mapFieldNames'] = array(); } $newMapping[$table]['mapFieldNames'][$field] = $newName; } } } } // Sort table and field names foreach ($newMapping as $table => &$config) { if (isset($config['mapFieldNames'])) { ksort($config['mapFieldNames']); } } ksort($newMapping); // Write new mapping to localconf.php $key = '$TYPO3_CONF_VARS[\'EXTCONF\'][\'dbal\'][\'mapping\']'; $instObj->allowUpdateLocalConf = 1; $instObj->updateIdentity = 'TYPO3 Extension Manager'; $lines = $instObj->writeToLocalconf_control(); $instObj->setArrayValueInLocalconfFile($lines, $key, $newMapping); if ($instObj->writeToLocalconf($lines)) { $this->mapping = $newMapping; } }