mirror of
https://github.com/e107inc/e107.git
synced 2025-08-14 02:24:08 +02:00
Convert and run e107 using the MySQL/MariaDB utf8mb4 character set and
InnoDB storage engine Components affected: * `db_verify` now checks and corrects the table storage engine * `db_verify` now checks and corrects the table default character set * Note: Field character sets can still be overridden * Note: When correcting, the entire table is converted to the target charset. * The alt_auth plugin now connects via PDO using the e107 default charset, utf8mb4 * `e_db_pdo` now sets the charset to utf8mb4. This is currently not customizable because it was previously not customizable. * `install.php` now generates an `e107_config.php` file with `$mySQLcharset = 'utf8mb4';`, though this option is not actually used. * `install.php` now removes plugin tables before installing plugins. * `e_db_mysql` now only accepts the `utf8mb4` charset. Previously, it only accepted the `utf8` charset. * `e_db_mysql` now configures `mysqli_real_escape_string` to match the new default charset, `utf8mb4`. * Plugin installations now use the preferred MySQL table storage engines and charsets. The preferred MySQL table storage engines are now mapped like so: * If `ENGINE=MyISAM` is specified, the actual storage engine set will be the first available of: InnoDB, Aria, Maria, MyISAM * If `ENGINE=Aria` is specified, the actual storage engine set will be the first available of: Aria, Maria, MyISAM * If `ENGINE=InnoDB` is specified, the actual storage engine set will be the first available of: InnoDB, XtraDB * If `ENGINE=XtraDB` is specified, the actual storage engine set will be the first available of: XtraDB, InnoDB The preferred MySQL character set is now aliased like so: * `utf8` => `utf8mb4` * `utf8mb3` => `utf8mb3` * `utf8mb4` => `utf8mb4` Fixes: #4501
This commit is contained in:
@@ -3412,9 +3412,8 @@ class e107plugin
|
||||
return null;
|
||||
}
|
||||
|
||||
/** @var db_verify $dbv */
|
||||
$dbv = e107::getSingleton('db_verify', e_HANDLER."db_verify_class.php");
|
||||
// require_once(e_HANDLER."db_verify_class.php");
|
||||
// $dbv = new db_verify;
|
||||
$sql = e107::getDb();
|
||||
|
||||
// Add or Remove Table --------------
|
||||
@@ -3436,12 +3435,15 @@ class e107plugin
|
||||
|
||||
foreach($tableData['tables'] as $k=>$v)
|
||||
{
|
||||
$engine = $dbv->getIntendedStorageEngine($tableData['engine'][$k]);
|
||||
$charset = $dbv->getIntendedCharset($tableData['charset'][$k]);
|
||||
|
||||
switch($function)
|
||||
{
|
||||
case "install":
|
||||
$query = "CREATE TABLE `".MPREFIX.$v."` (\n";
|
||||
$query .= $tableData['data'][$k];
|
||||
$query .= "\n) ENGINE=". vartrue($tableData['engine'][$k],"InnoDB")." DEFAULT CHARSET=utf8 ";
|
||||
$query .= "\n) ENGINE=$engine DEFAULT CHARSET=$charset ";
|
||||
|
||||
$txt = EPL_ADLAN_239." <b>{$v}</b> ";
|
||||
$status = $sql->db_Query($query) ? E_MESSAGE_SUCCESS : E_MESSAGE_ERROR;
|
||||
@@ -4633,7 +4635,7 @@ class e107plugin
|
||||
/**
|
||||
* Installs a plugin by ID or folder name
|
||||
*
|
||||
* @param int $id
|
||||
* @param int|string $id
|
||||
* @param array $options (currently only 'nolinks' - set to true to prevent sitelink creation during install)
|
||||
*/
|
||||
function install($id, $options = array())
|
||||
|
Reference in New Issue
Block a user