2 namespace TYPO3\CMS\Install\Updates;
27 parent::__construct();
28 $this->title =
'Update database schema: Create tables and fields';
39 $description =
'There are tables or fields in the database which need to be created.<br /><br />' .
40 'You have to run this update wizard before you can run any other update wizard to make sure all needed tables and fields are present.';
43 $updateSuggestions = $this->schemaMigrationService->getUpdateSuggestions($databaseDifferences);
45 return isset($updateSuggestions[
'create_table']) || isset($updateSuggestions[
'add']);
59 $updateSuggestions = $this->schemaMigrationService->getUpdateSuggestions($databaseDifferences);
61 if (isset($updateSuggestions[
'create_table'])) {
64 Add the following tables:
67 <ol class="t3-install-form-label-after">%s</ol>
70 <li class="labelAfter">
71 <label><strong>%1$s</strong></label>
75 foreach ($databaseDifferences[
'extra'] as $tableName => $difference) {
76 if ($difference[
'whole_table'] == 1) {
77 $items[] = sprintf($item, $tableName);
80 $result .= sprintf(
$list, implode(
'', $items));
83 if (isset($updateSuggestions[
'add'])) {
86 Add the following fields to tables:
89 <ol class="t3-install-form-label-after">%s</ol>
93 Add the following keys to tables:
96 <ol class="t3-install-form-label-after">%s</ol>
99 <li class="labelAfter">
100 <label><strong>%1$s</strong>: %2$s</label>
103 $fieldItems = array();
105 foreach ($databaseDifferences[
'extra'] as $tableName => $difference) {
106 if ($difference[
'whole_table'] != 1) {
107 if ($difference[
'fields']) {
108 $fieldNames = array();
109 foreach ($difference[
'fields'] as $fieldName => $sql) {
110 $fieldNames[] = $fieldName;
112 $fieldItems[] = sprintf($item, $tableName, implode(
', ', $fieldNames));
114 if ($difference[
'keys']) {
116 foreach ($difference[
'keys'] as $keyName => $sql) {
117 $keyNames[] = $keyName;
119 $keyItems[] = sprintf($item, $tableName, implode(
', ', $keyNames));
123 if (!empty($fieldItems)) {
124 $result .= sprintf($fieldsList, implode(
'', $fieldItems));
126 if (!empty($keyItems)) {
127 $result .= sprintf($keysList, implode(
'', $keyItems));
147 $updateStatements = $this->schemaMigrationService->getUpdateSuggestions($databaseDifferences);
150 foreach ((array)$updateStatements[
'create_table'] as $query) {
151 $db->admin_query($query);
152 $dbQueries[] = $query;
153 if ($db->sql_error()) {
154 $customMessages =
'SQL-ERROR: ' . htmlspecialchars($db->sql_error());
159 foreach ((array)$updateStatements[
'add'] as $query) {
160 $db->admin_query($query);
161 $dbQueries[] = $query;
162 if ($db->sql_error()) {
163 $customMessages =
'SQL-ERROR: ' . htmlspecialchars($db->sql_error());