public function migrateSyntaxTableCreate($table, array $formattedFields, array $columnsSyntax, array $options)
{
$options = $this->formatMigrateOptions($options);
// Begin syntax soup
$syntax = "CREATE TABLE IF NOT EXISTS `" . $table . "` (\n";
// Columns
$syntax .= implode(",\n", $columnsSyntax);
// Keys...
$ki = 0;
$tableKeys = array('primary' => array(), 'unique' => array(), 'index' => array());
$fulltextFields = array();
$usedKeyNames = array();
foreach ($formattedFields as $fieldName => $fieldInfo) {
// Determine key field name (can't use same key name twice, so we have to append a number)
$fieldKeyName = $fieldName;
while (in_array($fieldKeyName, $usedKeyNames)) {
$fieldKeyName = $fieldName . '_' . $ki;
}
// Key type
if ($fieldInfo['primary']) {
$tableKeys['primary'][] = $fieldName;
}
if ($fieldInfo['unique']) {
if (is_string($fieldInfo['unique'])) {
// Named group
$fieldKeyName = $fieldInfo['unique'];
}
$tableKeys['unique'][$fieldKeyName][] = $fieldName;
$usedKeyNames[] = $fieldKeyName;
}
if ($fieldInfo['index']) {
$fieldKeyName = $fieldName;
if (is_string($fieldInfo['index'])) {
// Named group
$fieldKeyName = $fieldInfo['index'];
}
$tableKeys['index'][$fieldKeyName][] = $fieldName;
$usedKeyNames[] = $fieldKeyName;
}
// FULLTEXT search
if ($fieldInfo['fulltext']) {
$fulltextFields[] = $fieldName;
}
}
// FULLTEXT
if ($fulltextFields) {
// Ensure table type is MyISAM if FULLTEXT columns have been specified
if ('myisam' !== strtolower($options['engine'])) {
$options['engine'] = 'MyISAM';
}
$syntax .= "\n, FULLTEXT(`" . implode('`, `', $fulltextFields) . "`)";
}
// PRIMARY
if ($tableKeys['primary']) {
$syntax .= "\n, PRIMARY KEY(`" . implode('`, `', $tableKeys['primary']) . "`)";
}
// UNIQUE
foreach ($tableKeys['unique'] as $keyName => $keyFields) {
$syntax .= "\n, UNIQUE KEY `" . $keyName . "` (`" . implode('`, `', $keyFields) . "`)";
}
// INDEX
foreach ($tableKeys['index'] as $keyName => $keyFields) {
$syntax .= "\n, KEY `" . $keyName . "` (`" . implode('`, `', $keyFields) . "`)";
}
// Extra
$syntax .= "\n) ENGINE=" . $options['engine'] . " DEFAULT CHARSET=" . $options['charset'] . " COLLATE=" . $options['collate'] . ";";
return $syntax;
}