private function fieldFormat($type, $default_value, $nodefault = false)
{
$format = '';
switch ($type) {
case 'bool':
$format = "TINYINT(1) NOT NULL";
if (!$nodefault) {
if (is_null($default_value)) {
$format .= " DEFAULT '0'";
} else {
if (in_array($default_value, array('0', '1'))) {
$format .= " DEFAULT '{$default_value}'";
} else {
trigger_error(__('default_value must be 0 or 1'), E_USER_ERROR);
}
}
}
break;
case 'char':
$format = "CHAR(1)";
if (!$nodefault) {
if (is_null($default_value)) {
$format .= " DEFAULT NULL";
} else {
$format .= " NOT NULL DEFAULT '{$default_value}'";
}
}
break;
case 'string':
$format = "VARCHAR(255) COLLATE utf8_unicode_ci";
if (!$nodefault) {
if (is_null($default_value)) {
$format .= " DEFAULT NULL";
} else {
$format .= " NOT NULL DEFAULT '{$default_value}'";
}
}
break;
case 'integer':
$format = "INT(11) NOT NULL";
if (!$nodefault) {
if (is_null($default_value)) {
$format .= " DEFAULT '0'";
} else {
if (is_numeric($default_value)) {
$format .= " DEFAULT '{$default_value}'";
} else {
trigger_error(__('default_value must be numeric'), E_USER_ERROR);
}
}
}
break;
case 'date':
$format = "DATE";
if (!$nodefault) {
if (is_null($default_value)) {
$format .= " DEFAULT NULL";
} else {
$format .= " DEFAULT '{$default_value}'";
}
}
break;
case 'datetime':
$format = "DATETIME";
if (!$nodefault) {
if (is_null($default_value)) {
$format .= " DEFAULT NULL";
} else {
$format .= " DEFAULT '{$default_value}'";
}
}
break;
case 'text':
$format = "TEXT COLLATE utf8_unicode_ci";
if (!$nodefault) {
if (is_null($default_value)) {
$format .= " DEFAULT NULL";
} else {
$format .= " NOT NULL DEFAULT '{$default_value}'";
}
}
break;
case 'longtext':
$format = "LONGTEXT COLLATE utf8_unicode_ci";
if (!$nodefault) {
if (is_null($default_value)) {
$format .= " DEFAULT NULL";
} else {
$format .= " NOT NULL DEFAULT '{$default_value}'";
}
}
break;
// for plugins
// for plugins
case 'autoincrement':
$format = "INT(11) NOT NULL AUTO_INCREMENT";
break;
default:
// for compatibility with old 0.80 migrations
$format = $type;
break;
}
return $format;
}