]> git.mjollnir.org Git - s9y.git/commitdiff
Support UTF-8 table creation options. Thanks to Mark Kubacki and Kris Köhntopp.
authorgarvinhicking <garvinhicking>
Tue, 27 Sep 2005 11:38:01 +0000 (11:38 +0000)
committergarvinhicking <garvinhicking>
Tue, 27 Sep 2005 11:38:01 +0000 (11:38 +0000)
include/db/mysql.inc.php
include/db/mysqli.inc.php
include/db/postgres.inc.php
include/db/sqlite.inc.php
sql/db.sql

index 3144143e9326f7ddb8c0910bf41a5dff95d870bf..8430641e0c44f3d9ac8cc8bb788f472d4f6589d7 100644 (file)
@@ -159,9 +159,24 @@ function serendipity_db_schema_import($query) {
     static $search  = array('{AUTOINCREMENT}', '{PRIMARY}',
         '{UNSIGNED}', '{FULLTEXT}', '{FULLTEXT_MYSQL}', '{BOOLEAN}');
     static $replace = array('int(11) not null auto_increment', 'primary key',
-        'unsigned'  , 'FULLTEXT', 'FULLTEXT', 'enum (\'true\', \'false\') NOT NULL default \'true\'');
-
+        'unsigned'  , 'FULLTEXT', 'FULLTEXT', 'enum (\'true\', \'false\') NOT NULL default \'true\''); 
+    static $is_utf8 = null;
+    global $serendipity;
+    
+    if ($is_utf8 === null) {
+        $search[] = '{UTF_8}'; 
+        if (  $_POST['charset'] == 'UTF-8/' || 
+              $serendipity['charset'] == 'UTF-8/' ||
+              $serendipity['POST']['charset'] == 'UTF-8/' || 
+              LANG_CHARSET == 'UTF-8' ) {
+            $replace[] = '/*!40100 CHARACTER SET utf8 COLLATE utf8_unicode_ci */';
+        } else {
+            $replace[] = '';
+        }
+    }
+    
     $query = trim(str_replace($search, $replace, $query));
+
     if ($query{0} == '@') {
         // Errors are expected to happen (like duplicate index creation)
         return serendipity_db_query(substr($query, 1), false, 'both', false, false, false, true);
index e2f244186f5724c17f4702428c759355082c2c2f..99236216f44a7b6483ecfbd9e396250c5d855ffc 100644 (file)
@@ -156,6 +156,20 @@ function serendipity_db_schema_import($query) {
         '{UNSIGNED}', '{FULLTEXT}', '{FULLTEXT_MYSQL}', '{BOOLEAN}');
     static $replace = array('int(11) not null auto_increment', 'primary key',
         'unsigned'  , 'FULLTEXT', 'FULLTEXT', 'enum (\'true\', \'false\') NOT NULL default \'true\'');
+    static $is_utf8 = null;
+    global $serendipity;
+    
+    if ($is_utf8 === null) {
+        $search[] = '{UTF_8}'; 
+        if (  $_POST['charset'] == 'UTF-8/' || 
+              $serendipity['charset'] == 'UTF-8/' ||
+              $serendipity['POST']['charset'] == 'UTF-8/' || 
+              LANG_CHARSET == 'UTF-8' ) {
+            $replace[] = '/*!40100 CHARACTER SET utf8 COLLATE utf8_unicode_ci */';
+        } else {
+            $replace[] = '';
+        }
+    }
 
     $query = trim(str_replace($search, $replace, $query));
     if ($query{0} == '@') {
index 0c758f1250cce9b3cd4c797cc88123a8872598a2..b07f01da9ecc6630c0d31a9bf887c9c4a132d98a 100644 (file)
@@ -160,9 +160,9 @@ function &serendipity_db_query($sql, $single = false, $result_type = "both", $re
 
 function serendipity_db_schema_import($query) {
     static $search  = array('{AUTOINCREMENT}', '{PRIMARY}', '{UNSIGNED}',
-        '{FULLTEXT}', '{BOOLEAN}', 'int(1)', 'int(10)', 'int(11)', 'int(4)');
+        '{FULLTEXT}', '{BOOLEAN}', 'int(1)', 'int(10)', 'int(11)', 'int(4)', '{UTF_8});
     static $replace = array('SERIAL', 'primary key', '', '', 'BOOLEAN NOT NULL', 'int2',
-        'int4', 'int4', 'int4');
+        'int4', 'int4', 'int4', '');
 
     if (stristr($query, '{FULLTEXT_MYSQL}')) {
         return true;
index fe3aa880276bae4a7563a1edb11f9fa05df50e80..a24b4d312d75cee4dfcf653637a6d34612d88ff3 100644 (file)
@@ -210,8 +210,8 @@ function serendipity_db_probe($hash, &$errs)
 
 function serendipity_db_schema_import($query)
 {
-    static $search  = array('{AUTOINCREMENT}', '{PRIMARY}', '{UNSIGNED}', '{FULLTEXT}', '{BOOLEAN}');
-    static $replace = array('INTEGER', 'PRIMARY KEY', '', '', 'BOOLEAN NOT NULL');
+    static $search  = array('{AUTOINCREMENT}', '{PRIMARY}', '{UNSIGNED}', '{FULLTEXT}', '{BOOLEAN}', '{UTF_8}');
+    static $replace = array('INTEGER', 'PRIMARY KEY', '', '', 'BOOLEAN NOT NULL', '');
 
     if (stristr($query, '{FULLTEXT_MYSQL}')) {
         return true;
index 744a1ea8606a2335ad6a8a7f702feff5fd7b139e..18d31ce7e487dc319b842141092cdd23a95e5895 100644 (file)
@@ -21,18 +21,18 @@ create table {PREFIX}authors (
   email varchar(128) not null default '',
   userlevel int(4) {UNSIGNED} not null default '0',
   right_publish int(1) default '1'
-);
+) {UTF_8};
 
 create table {PREFIX}groups (
   id {AUTOINCREMENT} {PRIMARY},
   name varchar(64) default null
-);
+) {UTF_8};
 
 create table {PREFIX}groupconfig (
   id int(10) {UNSIGNED} not null default '0',
   property varchar(64) default null,
   value varchar(128) default null
-);
+) {UTF_8};
 
 CREATE INDEX groupid_idx ON {PREFIX}groupconfig (id);
 CREATE INDEX groupprop_idx ON {PREFIX}groupconfig (id, property);
@@ -40,7 +40,7 @@ CREATE INDEX groupprop_idx ON {PREFIX}groupconfig (id, property);
 create table {PREFIX}authorgroups (
   groupid int(10) {UNSIGNED} not null default '0',
   authorid int(10) {UNSIGNED} not null default '0'
-);
+) {UTF_8};
 
 CREATE INDEX authorgroup_idxA ON {PREFIX}authorgroups (groupid);
 CREATE INDEX authorgroup_idxB ON {PREFIX}authorgroups (authorid);
@@ -51,7 +51,7 @@ create table {PREFIX}access (
   artifact_type varchar(64) NOT NULL default '',
   artifact_mode varchar(64) NOT NULL default '',
   artifact_index varchar(64) NOT NULL default ''
-);
+) {UTF_8};
 
 CREATE INDEX accessgroup_idx ON {PREFIX}access(groupid);
 CREATE INDEX accessgroupT_idx ON {PREFIX}access(artifact_id,artifact_type,artifact_mode);
@@ -77,7 +77,7 @@ create table {PREFIX}comments (
   subscribed {BOOLEAN},
   status varchar(50) not null,
   referer varchar(200) default null
-);
+) {UTF_8};
 
 CREATE INDEX commentry_idx ON {PREFIX}comments (entry_id);
 CREATE INDEX commpentry_idx ON {PREFIX}comments (parent_id);
@@ -103,7 +103,7 @@ create table {PREFIX}entries (
   allow_comments {BOOLEAN},
   last_modified int(10) {UNSIGNED} default null,
   moderate_comments {BOOLEAN}
-);
+) {UTF_8};
 
 # FULLTEXT_MYSQL is ignored on all Non-MySQL setups (SQLite, PostgreSQL)
 CREATE {FULLTEXT_MYSQL} INDEX entry_idx on {PREFIX}entries (title,body,extended);
@@ -121,7 +121,7 @@ create table {PREFIX}references (
   entry_id int(10) {UNSIGNED} not null default '0',
   link text,
   name text
-);
+) {UTF_8};
 
 CREATE INDEX refentry_idx ON {PREFIX}references (entry_id);
 
@@ -139,7 +139,7 @@ CREATE TABLE {PREFIX}exits (
   path varchar(255),
   query varchar(255),
   PRIMARY KEY  (host,day,entry_id)
-);
+) {UTF_8};
 
 CREATE INDEX exits_idx ON {PREFIX}exits (entry_id,day);
 
@@ -157,7 +157,7 @@ CREATE TABLE {PREFIX}referrers (
   path varchar(255),
   query varchar(255),
   PRIMARY KEY  (host,day,entry_id)
-);
+) {UTF_8};
 
 CREATE INDEX referrers_idx ON {PREFIX}referrers (entry_id,day);
 
@@ -169,7 +169,7 @@ create table {PREFIX}config (
   name varchar(255) not null,
   value text not null,
   authorid int(11) default '0'
-);
+) {UTF_8};
 
 CREATE INDEX configauthorid_idx ON {PREFIX}config (authorid);
 
@@ -181,7 +181,7 @@ CREATE TABLE {PREFIX}suppress (
   path varchar(255),
   query varchar(255),
   last timestamp NOT NULL
-);
+) {UTF_8};
 
 CREATE INDEX url_idx on {PREFIX}suppress (host, ip);
 CREATE INDEX urllast_idx on {PREFIX}suppress (last);
@@ -193,7 +193,7 @@ CREATE TABLE {PREFIX}plugins (
   authorid int(11) default '0',
   path varchar(255) default null,
   PRIMARY KEY(name)
-);
+) {UTF_8};
 
 CREATE INDEX pluginauthorid_idx ON {PREFIX}plugins (authorid);
 CREATE INDEX pluginplace_idx ON {PREFIX}plugins (placement);
@@ -207,7 +207,7 @@ CREATE TABLE {PREFIX}category (
   category_left int(11) default '0',
   category_right int(11) default '0',
   parentid int(11) DEFAULT '0' NOT NULL
-);
+) {UTF_8};
 
 CREATE INDEX categorya_idx ON {PREFIX}category (authorid);
 CREATE INDEX categoryp_idx ON {PREFIX}category (parentid);
@@ -226,7 +226,7 @@ CREATE TABLE {PREFIX}images (
   authorid int(11) default '0',
   path text,
   hotlink int(1)
-);
+) {UTF_8};
 
 CREATE INDEX imagesauthorid_idx ON {PREFIX}images (authorid);
 CREATE {FULLTEXT} INDEX pathkey_idx on {PREFIX}images (path);
@@ -234,7 +234,7 @@ CREATE {FULLTEXT} INDEX pathkey_idx on {PREFIX}images (path);
 CREATE TABLE {PREFIX}entrycat (
   entryid int(11) not null,
   categoryid int(11) not null
-);
+) {UTF_8};
 
 CREATE UNIQUE INDEX entryid_idx ON {PREFIX}entrycat (entryid, categoryid);
 
@@ -242,7 +242,7 @@ create table {PREFIX}entryproperties (
   entryid int(11) not null,
   property varchar(255) not null,
   value text
-);
+) {UTF_8};
 
 CREATE INDEX entrypropid_idx ON {PREFIX}entryproperties (entryid);
 CREATE UNIQUE INDEX prop_idx ON {PREFIX}entryproperties (entryid, property);
@@ -252,7 +252,7 @@ CREATE TABLE {PREFIX}permalinks (
     entry_id int(10) {UNSIGNED} not null default '0',
     type varchar(200) not null default '',
     data text
-);
+) {UTF_8};
 
 CREATE INDEX pl_idx ON {PREFIX}permalinks (permalink);
 CREATE INDEX ple_idx ON {PREFIX}permalinks (entry_id);
@@ -262,7 +262,7 @@ CREATE INDEX plcomb_idx ON {PREFIX}permalinks (permalink, type);
 create table {PREFIX}plugincategories (
   class_name varchar(250) default null,
   category varchar(250) default null
-);
+) {UTF_8};
 
 CREATE INDEX plugincat_idx ON {PREFIX}plugincategories(class_name, category);
 
@@ -282,7 +282,7 @@ create table {PREFIX}pluginlist (
   requirements text NOT NULL,
   website varchar(255) NOT NULL default '',
   last_modified int(11) NOT NULL default '0'
-);
+) {UTF_8};
 
 CREATE INDEX pluginlist_f_idx ON {PREFIX}pluginlist(plugin_file);
 CREATE INDEX pluginlist_cn_idx ON {PREFIX}pluginlist(class_name);