public function getDbInstallerArray()
{
$return = array();
// Fields
foreach ($this->arrFields as $k => $v) {
if (is_array($v)) {
if (!isset($v['name'])) {
$v['name'] = $k;
}
$return['SCHEMA_FIELDS'][$k] = $v;
} else {
$return['TABLE_FIELDS'][$k] = '`' . $k . '` ' . $v;
}
}
$quote = function ($item) {
return '`' . $item . '`';
};
// Keys
foreach ($this->arrKeys as $k => $v) {
// Handle multi-column indexes (see #5556)
if (strpos($k, ',') !== false) {
$f = array_map($quote, \StringUtil::trimsplit(',', $k));
$k = str_replace(',', '_', $k);
} else {
$f = array($quote($k));
}
// Handle key lengths (see #221)
if (preg_match('/\\([0-9]+\\)/', $v)) {
list($v, $length) = explode('(', rtrim($v, ')'));
$f = array($quote($k) . '(' . $length . ')');
}
if ($v == 'primary') {
$k = 'PRIMARY';
$v = 'PRIMARY KEY (' . implode(', ', $f) . ')';
} elseif ($v == 'index') {
$v = 'KEY `' . $k . '` (' . implode(', ', $f) . ')';
} else {
$v = strtoupper($v) . ' KEY `' . $k . '` (' . implode(', ', $f) . ')';
}
$return['TABLE_CREATE_DEFINITIONS'][$k] = $v;
}
$return['TABLE_OPTIONS'] = '';
// Options
foreach ($this->arrMeta as $k => $v) {
if ($k == 'engine') {
$return['TABLE_OPTIONS'] .= ' ENGINE=' . $v;
} elseif ($k == 'charset') {
$return['TABLE_OPTIONS'] .= ' DEFAULT CHARSET=' . $v;
}
}
return $return;
}