Index: core/install.php =================================================================== --- core/install.php +++ core/install.php @@ -546,6 +546,17 @@ // 2. check permissions, that use have in this database $status = $this->CheckDatabase(($this->currentStep == 'db_config') && !$this->GetVar('UseExistingSetup')); + + if ( $status ) { + $db_collation = $this->toolkit->systemConfig->get('DBCollation', 'Database'); + $sql = 'SHOW COLLATION LIKE ' . $this->Conn->qstr($db_collation); + $db_collation_data = $this->Conn->Query($sql); + + if ( !is_array($db_collation_data) || !$db_collation_data ) { + $status = false; + $this->errorMessage = 'Please choose another Database Collation'; + } + } break; case 'select_license': Index: core/install/step_templates/db_config.tpl =================================================================== --- core/install/step_templates/db_config.tpl +++ core/install/step_templates/db_config.tpl @@ -48,11 +48,16 @@ <td align="left"> <select name="DBCollation" class="text"> <?php - $option_tpl = '<option value="%1$s"%2$s>%1$s</option>'."\n"; - $collations = Array ('utf8_general_ci', 'latin1_swedish_ci'); - foreach ($collations as $collation) { - $selected = ($collation == $this->toolkit->systemConfig->get('DBCollation', 'Database')) ? ' selected="selected"' : ''; - echo sprintf($option_tpl, $collation, $selected); + $option_tpl = '<option value="%1$s"%3$s>%2$s</option>'."\n"; + $collations = Array ( + 'utf8_general_ci' => 'utf8_general_ci (MySQL 5.x)', + 'utf8mb3_general_ci' => 'utf8mb3_general_ci (MySQL 8.x+)', + 'utf8mb4_general_ci' => 'utf8mb4_general_ci (MySQL 8.x+)', + 'latin1_swedish_ci' => 'latin1_swedish_ci (MySQL 5.x & MySQL 8.x+)', + ); + foreach ($collations as $collation_key => $collation_title) { + $selected = ($collation_key == $this->toolkit->systemConfig->get('DBCollation', 'Database')) ? ' selected="selected"' : ''; + echo sprintf($option_tpl, $collation_key, $collation_title, $selected); } ?> </select> @@ -74,4 +79,4 @@ <input type="radio" name="UseExistingSetup" id="UseExistingSetup_1" value="1"/> <label for="UseExistingSetup_1">Yes</label> <input type="radio" name="UseExistingSetup" id="UseExistingSetup_0" value="0" checked/> <label for="UseExistingSetup_0">No</label> </td> </tr> -<?php } ?> \ No newline at end of file +<?php } ?> Index: core/install/step_templates/db_reconfig.tpl =================================================================== --- core/install/step_templates/db_reconfig.tpl +++ core/install/step_templates/db_reconfig.tpl @@ -48,11 +48,16 @@ <td align="left"> <select name="DBCollation" class="text"> <?php - $option_tpl = '<option value="%1$s"%2$s>%1$s</option>'."\n"; - $collations = Array ('utf8_general_ci', 'latin1_swedish_ci'); - foreach ($collations as $collation) { - $selected = ($collation == $this->toolkit->systemConfig->get('DBCollation', 'Database')) ? ' selected="selected"' : ''; - echo sprintf($option_tpl, $collation, $selected); + $option_tpl = '<option value="%1$s"%3$s>%2$s</option>'."\n"; + $collations = Array ( + 'utf8_general_ci' => 'utf8_general_ci (MySQL 5.x)', + 'utf8mb3_general_ci' => 'utf8mb3_general_ci (MySQL 8.x+)', + 'utf8mb4_general_ci' => 'utf8mb4_general_ci (MySQL 8.x+)', + 'latin1_swedish_ci' => 'latin1_swedish_ci (MySQL 5.x/8.x+)', + ); + foreach ($collations as $collation_key => $collation_title) { + $selected = ($collation_key == $this->toolkit->systemConfig->get('DBCollation', 'Database')) ? ' selected="selected"' : ''; + echo sprintf($option_tpl, $collation_key, $collation_title, $selected); } ?> </select> @@ -64,4 +69,4 @@ <td align="left"> <input type="text" name="TablePrefix" class="text" maxlength="7" value="<?php echo $this->toolkit->systemConfig->get('TablePrefix', 'Database'); ?>" /> </td> -</tr> \ No newline at end of file +</tr>