WordPress.org

Make WordPress Core

Changeset 1575


Ignore:
Timestamp:
08/30/2004 07:16:40 AM (14 years ago)
Author:
saxmatt
Message:

Vanquishing the terror of iso-8859-1.

Location:
trunk
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/import-b2.php

    r1429 r1575  
    99<html xmlns="http://www.w3.org/1999/xhtml">
    1010    <title>WordPress &#8212; b2 Conversion</title>
    11     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     11    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    1212    <style media="screen" type="text/css">
    1313    body {
  • trunk/wp-admin/import-livejournal.php

    r1429 r1575  
    2222<html xmlns="http://www.w3.org/1999/xhtml">
    2323<title>WordPress &rsaquo; Import from RSS</title>
    24 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     24<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    2525<style media="screen" type="text/css">
    2626    body {
  • trunk/wp-admin/import-mt.php

    r1541 r1575  
    1111<html xmlns="http://www.w3.org/1999/xhtml">
    1212<title>WordPress &rsaquo; Import from Movable Type</title>
    13 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     13<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    1414<style media="screen" type="text/css">
    1515    body {
  • trunk/wp-admin/import-rss.php

    r1429 r1575  
    2727<html xmlns="http://www.w3.org/1999/xhtml">
    2828<title>WordPress &rsaquo; Import from RSS</title>
    29 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     29<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    3030<style media="screen" type="text/css">
    3131    body {
  • trunk/wp-admin/import-textpattern.php

    r1429 r1575  
    1818<html xmlns="http://www.w3.org/1999/xhtml">
    1919<title>WordPress &rsaquo; Textpattern Import</title>
    20 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     20<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    2121<style media="screen" type="text/css">
    2222    body {
  • trunk/wp-admin/setup-config.php

    r1429 r1575  
    1818<head>
    1919<title>WordPress &rsaquo; Setup Configuration File</title>
    20 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     20<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    2121<style media="screen" type="text/css">
    2222    <!--
  • trunk/wp-admin/upgrade-functions.php

    r1529 r1575  
    11<?php
    22// Functions to be called in install and upgrade scripts
     3
     4// First let's set up the tables:
     5
     6$wp_queries="CREATE TABLE $wpdb->categories (
     7  cat_ID int(4) NOT NULL auto_increment,
     8  cat_name varchar(55) NOT NULL default '',
     9  category_nicename varchar(200) NOT NULL default '',
     10  category_description text NOT NULL,
     11  category_parent int(4) NOT NULL default '0',
     12  PRIMARY KEY  (cat_ID),
     13  UNIQUE KEY cat_name (cat_name),
     14  KEY category_nicename (category_nicename)
     15);
     16CREATE TABLE $wpdb->comments (
     17  comment_ID int(11) unsigned NOT NULL auto_increment,
     18  comment_post_ID int(11) NOT NULL default '0',
     19  comment_author tinytext NOT NULL,
     20  comment_author_email varchar(100) NOT NULL default '',
     21  comment_author_url varchar(200) NOT NULL default '',
     22  comment_author_IP varchar(100) NOT NULL default '',
     23  comment_date datetime NOT NULL default '0000-00-00 00:00:00',
     24  comment_date_gmt datetime NOT NULL default '0000-00-00 00:00:00',
     25  comment_content text NOT NULL,
     26  comment_karma int(11) NOT NULL default '0',
     27  comment_approved enum('0','1') NOT NULL default '1',
     28  user_id int(11) NOT NULL default '0',
     29  PRIMARY KEY  (comment_ID),
     30  KEY comment_approved (comment_approved),
     31  KEY comment_post_ID (comment_post_ID)
     32);
     33CREATE TABLE $wpdb->linkcategories (
     34  cat_id int(11) NOT NULL auto_increment,
     35  cat_name tinytext NOT NULL,
     36  auto_toggle enum('Y','N') NOT NULL default 'N',
     37  show_images enum('Y','N') NOT NULL default 'Y',
     38  show_description enum('Y','N') NOT NULL default 'N',
     39  show_rating enum('Y','N') NOT NULL default 'Y',
     40  show_updated enum('Y','N') NOT NULL default 'Y',
     41  sort_order varchar(64) NOT NULL default 'name',
     42  sort_desc enum('Y','N') NOT NULL default 'N',
     43  text_before_link varchar(128) NOT NULL default '<li>',
     44  text_after_link varchar(128) NOT NULL default '<br />',
     45  text_after_all varchar(128) NOT NULL default '</li>',
     46  list_limit int(11) NOT NULL default '-1',
     47  PRIMARY KEY  (cat_id)
     48);
     49CREATE TABLE $wpdb->links (
     50  link_id int(11) NOT NULL auto_increment,
     51  link_url varchar(255) NOT NULL default '',
     52  link_name varchar(255) NOT NULL default '',
     53  link_image varchar(255) NOT NULL default '',
     54  link_target varchar(25) NOT NULL default '',
     55  link_category int(11) NOT NULL default '0',
     56  link_description varchar(255) NOT NULL default '',
     57  link_visible enum('Y','N') NOT NULL default 'Y',
     58  link_owner int(11) NOT NULL default '1',
     59  link_rating int(11) NOT NULL default '0',
     60  link_updated datetime NOT NULL default '0000-00-00 00:00:00',
     61  link_rel varchar(255) NOT NULL default '',
     62  link_notes mediumtext NOT NULL,
     63  link_rss varchar(255) NOT NULL default '',
     64  PRIMARY KEY  (link_id),
     65  KEY link_category (link_category),
     66  KEY link_visible (link_visible)
     67);
     68CREATE TABLE $wpdb->optiongroup_options (
     69  group_id int(11) NOT NULL default '0',
     70  option_id int(11) NOT NULL default '0',
     71  seq int(11) NOT NULL default '0',
     72  PRIMARY KEY  (group_id,option_id)
     73);
     74CREATE TABLE $wpdb->optiongroups (
     75  group_id int(11) NOT NULL auto_increment,
     76  group_name varchar(64) NOT NULL default '',
     77  group_desc varchar(255) default NULL,
     78  group_longdesc tinytext,
     79  PRIMARY KEY  (group_id)
     80);
     81CREATE TABLE $wpdb->options (
     82  option_id int(11) NOT NULL auto_increment,
     83  blog_id int(11) NOT NULL default '0',
     84  option_name varchar(64) NOT NULL default '',
     85  option_can_override enum('Y','N') NOT NULL default 'Y',
     86  option_type int(11) NOT NULL default '1',
     87  option_value text NOT NULL,
     88  option_width int(11) NOT NULL default '20',
     89  option_height int(11) NOT NULL default '8',
     90  option_description tinytext NOT NULL,
     91  option_admin_level int(11) NOT NULL default '1',
     92  autoload enum('yes','no') NOT NULL default 'yes',
     93  PRIMARY KEY  (option_id,blog_id,option_name)
     94);
     95CREATE TABLE $wpdb->optiontypes (
     96  optiontype_id int(11) NOT NULL auto_increment,
     97  optiontype_name varchar(64) NOT NULL default '',
     98  PRIMARY KEY  (optiontype_id)
     99);
     100CREATE TABLE $wpdb->optionvalues (
     101  option_id int(11) NOT NULL default '0',
     102  optionvalue tinytext,
     103  optionvalue_desc varchar(255) default NULL,
     104  optionvalue_max int(11) default NULL,
     105  optionvalue_min int(11) default NULL,
     106  optionvalue_seq int(11) default NULL,
     107  UNIQUE KEY option_id (option_id,optionvalue(255)),
     108  KEY option_id_2 (option_id,optionvalue_seq)
     109);
     110CREATE TABLE $wpdb->post2cat (
     111  rel_id int(11) NOT NULL auto_increment,
     112  post_id int(11) NOT NULL default '0',
     113  category_id int(11) NOT NULL default '0',
     114  PRIMARY KEY  (rel_id),
     115  KEY post_id (post_id,category_id)
     116);
     117CREATE TABLE $wpdb->postmeta (
     118  meta_id int(11) NOT NULL auto_increment,
     119  post_id int(11) NOT NULL default '0',
     120  meta_key varchar(255) default NULL,
     121  meta_value text,
     122  PRIMARY KEY  (meta_id),
     123  KEY post_id (post_id),
     124  KEY meta_key (meta_key)
     125);
     126CREATE TABLE $wpdb->posts (
     127  ID int(10) unsigned NOT NULL auto_increment,
     128  post_author int(4) NOT NULL default '0',
     129  post_date datetime NOT NULL default '0000-00-00 00:00:00',
     130  post_date_gmt datetime NOT NULL default '0000-00-00 00:00:00',
     131  post_content text NOT NULL,
     132  post_title text NOT NULL,
     133  post_category int(4) NOT NULL default '0',
     134  post_excerpt text NOT NULL,
     135  post_lat float default NULL,
     136  post_lon float default NULL,
     137  post_status enum('publish','draft','private','static') NOT NULL default 'publish',
     138  comment_status enum('open','closed','registered_only') NOT NULL default 'open',
     139  ping_status enum('open','closed') NOT NULL default 'open',
     140  post_password varchar(20) NOT NULL default '',
     141  post_name varchar(200) NOT NULL default '',
     142  to_ping text NOT NULL,
     143  pinged text NOT NULL,
     144  post_modified datetime NOT NULL default '0000-00-00 00:00:00',
     145  post_modified_gmt datetime NOT NULL default '0000-00-00 00:00:00',
     146  post_content_filtered text NOT NULL,
     147  post_parent int(11) NOT NULL default '0',
     148  PRIMARY KEY  (ID),
     149  KEY post_date (post_date),
     150  KEY post_date_gmt (post_date_gmt),
     151  KEY post_name (post_name),
     152  KEY post_status (post_status)
     153);
     154CREATE TABLE $wpdb->users (
     155  ID int(10) unsigned NOT NULL auto_increment,
     156  user_login varchar(20) NOT NULL default '',
     157  user_pass varchar(64) NOT NULL default '',
     158  user_firstname varchar(50) NOT NULL default '',
     159  user_lastname varchar(50) NOT NULL default '',
     160  user_nickname varchar(50) NOT NULL default '',
     161  user_nicename varchar(50) NOT NULL default '',
     162  user_icq int(10) unsigned NOT NULL default '0',
     163  user_email varchar(100) NOT NULL default '',
     164  user_url varchar(100) NOT NULL default '',
     165  user_ip varchar(15) NOT NULL default '',
     166  user_domain varchar(200) NOT NULL default '',
     167  user_browser varchar(200) NOT NULL default '',
     168  dateYMDhour datetime NOT NULL default '0000-00-00 00:00:00',
     169  user_level int(2) unsigned NOT NULL default '0',
     170  user_aim varchar(50) NOT NULL default '',
     171  user_msn varchar(100) NOT NULL default '',
     172  user_yim varchar(50) NOT NULL default '',
     173  user_idmode varchar(20) NOT NULL default '',
     174  user_activation_key varchar(60) NOT NULL default '',
     175  user_status int(11) NOT NULL default '0',
     176  PRIMARY KEY  (ID),
     177  UNIQUE KEY user_login (user_login)
     178);";
     179
     180
    3181
    4182function upgrade_all() {
     
    9187    upgrade_110();
    10188    upgrade_130();
    11 }
    12 
    13 // General
    14 function maybe_create_table($table_name, $create_ddl) {
    15     global $wpdb;
    16     foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) {
    17         if ($table == $table_name) {
    18             return true;
    19         }
    20     }
    21     //didn't find it try to create it.
    22     $q = $wpdb->query($create_ddl);
    23     // we cannot directly tell that whether this succeeded!
    24     foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) {
    25         if ($table == $table_name) {
    26             return true;
    27         }
    28     }
    29     return false;
    30 }
    31 
    32 function drop_index($table, $index) {
    33     global $wpdb;
    34     $wpdb->hide_errors();
    35     $wpdb->query("ALTER TABLE `$table` DROP INDEX `$index`");
    36     // Now we need to take out all the extra ones we may have created
    37     for ($i = 0; $i < 25; $i++) {
    38         $wpdb->query("ALTER TABLE `$table` DROP INDEX `{$index}_$i`");
    39     }
    40     $wpdb->show_errors();
    41     return true;
    42 }
    43 
    44 function add_clean_index($table, $index) {
    45     global $wpdb;
    46     drop_index($table, $index);
    47     $wpdb->query("ALTER TABLE `$table` ADD INDEX ( `$index` )");
    48     return true;
    49 }
    50 
    51 /**
    52  ** maybe_add_column()
    53  ** Add column to db table if it doesn't exist.
    54  ** Returns:  true if already exists or on successful completion
    55  **           false on error
    56  */
    57 function maybe_add_column($table_name, $column_name, $create_ddl) {
    58     global $wpdb, $debug;
    59     foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) {
    60         if ($debug) echo("checking $column == $column_name<br />");
    61         if ($column == $column_name) {
    62             return true;
    63         }
    64     }
    65     //didn't find it try to create it.
    66     $q = $wpdb->query($create_ddl);
    67     // we cannot directly tell that whether this succeeded!
    68     foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) {
    69         if ($column == $column_name) {
    70             return true;
    71         }
    72     }
    73     return false;
    74 }
    75 
    76 
    77 // get_alloptions as it was for 1.2.
    78 function get_alloptions_110() {
    79     global $wpdb;
    80     if ($options = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options")) {
    81         foreach ($options as $option) {
    82             // "When trying to design a foolproof system,
    83             //  never underestimate the ingenuity of the fools :)" -- Dougal
    84             if ('siteurl' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
    85             if ('home' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
    86             if ('category_base' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
    87             $all_options->{$option->option_name} = stripslashes($option->option_value);
    88         }
    89     }
    90     return $all_options;
    91 }
    92 
    93 function deslash($content) {
    94     // Note: \\\ inside a regex denotes a single backslash.
    95 
    96     // Replace one or more backslashes followed by a single quote with
    97     // a single quote.
    98     $content = preg_replace("/\\\+'/", "'", $content);
    99 
    100     // Replace one or more backslashes followed by a double quote with
    101     // a double quote.
    102     $content = preg_replace('/\\\+"/', '"', $content);
    103 
    104     // Replace one or more backslashes with one backslash.
    105     $content = preg_replace("/\\\+/", "\\", $content);
    106 
    107     return $content;
    108 }
     189
     190    // Options that should not exist
     191    $obs_options = array('');
     192}
     193
    109194
    110195// .71 stuff
     
    9291014        update_option('active_plugins', $plugins);
    9301015    }
     1016
     1017
     1018}
     1019
     1020// The functions we use to actually do stuff
     1021
     1022// General
     1023function maybe_create_table($table_name, $create_ddl) {
     1024    global $wpdb;
     1025    foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) {
     1026        if ($table == $table_name) {
     1027            return true;
     1028        }
     1029    }
     1030    //didn't find it try to create it.
     1031    $q = $wpdb->query($create_ddl);
     1032    // we cannot directly tell that whether this succeeded!
     1033    foreach ($wpdb->get_col("SHOW TABLES",0) as $table ) {
     1034        if ($table == $table_name) {
     1035            return true;
     1036        }
     1037    }
     1038    return false;
     1039}
     1040
     1041function drop_index($table, $index) {
     1042    global $wpdb;
     1043    $wpdb->hide_errors();
     1044    $wpdb->query("ALTER TABLE `$table` DROP INDEX `$index`");
     1045    // Now we need to take out all the extra ones we may have created
     1046    for ($i = 0; $i < 25; $i++) {
     1047        $wpdb->query("ALTER TABLE `$table` DROP INDEX `{$index}_$i`");
     1048    }
     1049    $wpdb->show_errors();
     1050    return true;
     1051}
     1052
     1053function add_clean_index($table, $index) {
     1054    global $wpdb;
     1055    drop_index($table, $index);
     1056    $wpdb->query("ALTER TABLE `$table` ADD INDEX ( `$index` )");
     1057    return true;
     1058}
     1059
     1060/**
     1061 ** maybe_add_column()
     1062 ** Add column to db table if it doesn't exist.
     1063 ** Returns:  true if already exists or on successful completion
     1064 **           false on error
     1065 */
     1066function maybe_add_column($table_name, $column_name, $create_ddl) {
     1067    global $wpdb, $debug;
     1068    foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) {
     1069        if ($debug) echo("checking $column == $column_name<br />");
     1070        if ($column == $column_name) {
     1071            return true;
     1072        }
     1073    }
     1074    //didn't find it try to create it.
     1075    $q = $wpdb->query($create_ddl);
     1076    // we cannot directly tell that whether this succeeded!
     1077    foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) {
     1078        if ($column == $column_name) {
     1079            return true;
     1080        }
     1081    }
     1082    return false;
     1083}
     1084
     1085
     1086// get_alloptions as it was for 1.2.
     1087function get_alloptions_110() {
     1088    global $wpdb;
     1089    if ($options = $wpdb->get_results("SELECT option_name, option_value FROM $wpdb->options")) {
     1090        foreach ($options as $option) {
     1091            // "When trying to design a foolproof system,
     1092            //  never underestimate the ingenuity of the fools :)" -- Dougal
     1093            if ('siteurl' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
     1094            if ('home' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
     1095            if ('category_base' == $option->option_name) $option->option_value = preg_replace('|/+$|', '', $option->option_value);
     1096            $all_options->{$option->option_name} = stripslashes($option->option_value);
     1097        }
     1098    }
     1099    return $all_options;
     1100}
     1101
     1102function deslash($content) {
     1103    // Note: \\\ inside a regex denotes a single backslash.
     1104
     1105    // Replace one or more backslashes followed by a single quote with
     1106    // a single quote.
     1107    $content = preg_replace("/\\\+'/", "'", $content);
     1108
     1109    // Replace one or more backslashes followed by a double quote with
     1110    // a double quote.
     1111    $content = preg_replace('/\\\+"/', '"', $content);
     1112
     1113    // Replace one or more backslashes with one backslash.
     1114    $content = preg_replace("/\\\+/", "\\", $content);
     1115
     1116    return $content;
     1117}
     1118
     1119function dbDelta($queries, $execute = true) {
     1120    global $wpdb;
     1121   
     1122    // Seperate individual queries into an array
     1123    if( !is_array($queries) ) {
     1124        $queries = explode( ';', $queries );
     1125        if('' == $queries[count($queries) - 1]) array_pop($queries);
     1126    }
     1127   
     1128    $cqueries = array(); // Creation Queries
     1129    $iqueries = array(); // Insertion Queries
     1130    $for_update = array();
     1131   
     1132    // Create a tablename index for an array ($cqueries) of queries
     1133    foreach($queries as $qry) {
     1134        if(preg_match("|CREATE TABLE ([^ ]*)|", $qry, $matches)) {
     1135            $cqueries[strtolower($matches[1])] = $qry;
     1136            $for_update[$matches[1]] = 'Created table '.$matches[1];
     1137        }
     1138        else if(preg_match("|CREATE DATABASE ([^ ]*)|", $qry, $matches)) {
     1139            array_unshift($cqueries, $qry);
     1140        }
     1141        else if(preg_match("|INSERT INTO ([^ ]*)|", $qry, $matches)) {
     1142            $iqueries[] = $qry;
     1143        }
     1144        else if(preg_match("|UPDATE ([^ ]*)|", $qry, $matches)) {
     1145            $iqueries[] = $qry;
     1146        }
     1147        else {
     1148            // Unrecognized query type
     1149        }
     1150    }   
     1151
     1152    // Check to see which tables and fields exist
     1153    if($tables = $wpdb->get_col('SHOW TABLES;')) {
     1154        // For every table in the database
     1155        foreach($tables as $table) {
     1156            // If a table query exists for the database table...
     1157            if( array_key_exists(strtolower($table), $cqueries) ) {
     1158                // Clear the field and index arrays
     1159                unset($cfields);
     1160                unset($indices);
     1161                // Get all of the field names in the query from between the parens
     1162                preg_match("|\((.*)\)|ms", $cqueries[strtolower($table)], $match2);
     1163                $qryline = trim($match2[1]);
     1164
     1165                // Separate field lines into an array
     1166                $flds = explode("\n", $qryline);
     1167
     1168                //echo "<hr/><pre>\n".print_r(strtolower($table), true).":\n".print_r($cqueries, true)."</pre><hr/>";
     1169               
     1170                // For every field line specified in the query
     1171                foreach($flds as $fld) {
     1172                    // Extract the field name
     1173                    preg_match("|^([^ ]*)|", trim($fld), $fvals);
     1174                    $fieldname = $fvals[1];
     1175                   
     1176                    // Verify the found field name
     1177                    $validfield = true;
     1178                    switch(strtolower($fieldname))
     1179                    {
     1180                    case '':
     1181                    case 'primary':
     1182                    case 'index':
     1183                    case 'fulltext':
     1184                    case 'unique':
     1185                    case 'key':
     1186                        $validfield = false;
     1187                        $indices[] = trim(trim($fld), ", \n");
     1188                        break;
     1189                    }
     1190                    $fld = trim($fld);
     1191                   
     1192                    // If it's a valid field, add it to the field array
     1193                    if($validfield) {
     1194                        $cfields[strtolower($fieldname)] = trim($fld, ", \n");
     1195                    }
     1196                }
     1197               
     1198                // Fetch the table column structure from the database
     1199                $tablefields = $wpdb->get_results("DESCRIBE {$table};");
     1200                               
     1201                // For every field in the table
     1202                foreach($tablefields as $tablefield) {             
     1203                    // If the table field exists in the field array...
     1204                    if(array_key_exists(strtolower($tablefield->Field), $cfields)) {
     1205                        // Get the field type from the query
     1206                        preg_match("|".$tablefield->Field." ([^ ]*( unsigned)?)|i", $cfields[strtolower($tablefield->Field)], $matches);
     1207                        $fieldtype = $matches[1];
     1208
     1209                        // Is actual field type different from the field type in query?
     1210                        if($tablefield->Type != $fieldtype) {
     1211                            // Add a query to change the column type
     1212                            $cqueries[] = "ALTER TABLE {$table} CHANGE COLUMN {$tablefield->Field} " . $cfields[strtolower($tablefield->Field)];
     1213                            $for_update[$table.'.'.$tablefield->Field] = "Changed type of {$table}.{$tablefield->Field} from {$tablefield->Type} to {$fieldtype}";
     1214                        }
     1215                       
     1216                        // Get the default value from the array
     1217                            //echo "{$cfields[strtolower($tablefield->Field)]}<br>";
     1218                        if(preg_match("| DEFAULT '(.*)'|i", $cfields[strtolower($tablefield->Field)], $matches)) {
     1219                            $default_value = $matches[1];
     1220                            if($tablefield->Default != $default_value)
     1221                            {
     1222                                // Add a query to change the column's default value
     1223                                $cqueries[] = "ALTER TABLE {$table} ALTER COLUMN {$tablefield->Field} SET DEFAULT '{$default_value}'";
     1224                                $for_update[$table.'.'.$tablefield->Field] = "Changed default value of {$table}.{$tablefield->Field} from {$tablefield->Default} to {$default_value}";
     1225                            }
     1226                        }
     1227
     1228                        // Remove the field from the array (so it's not added)
     1229                        unset($cfields[strtolower($tablefield->Field)]);
     1230                    }
     1231                    else {
     1232                        // This field exists in the table, but not in the creation queries?
     1233                    }
     1234                }
     1235
     1236                // For every remaining field specified for the table
     1237                foreach($cfields as $fieldname => $fielddef) {
     1238                    // Push a query line into $cqueries that adds the field to that table
     1239                    $cqueries[] = "ALTER TABLE {$table} ADD COLUMN $fielddef";
     1240                    $for_update[$table.'.'.$fieldname] = 'Added column '.$table.'.'.$fieldname;
     1241                }
     1242               
     1243                // Index stuff goes here
     1244                // Fetch the table index structure from the database
     1245                $tableindices = $wpdb->get_results("SHOW INDEX FROM {$table};");
     1246               
     1247                if($tableindices) {
     1248                    // Clear the index array
     1249                    unset($index_ary);
     1250
     1251                    // For every index in the table
     1252                    foreach($tableindices as $tableindex) {
     1253                        // Add the index to the index data array
     1254                        $keyname = $tableindex->Key_name;
     1255                        $index_ary[$keyname]['columns'][] = array('fieldname' => $tableindex->Column_name, 'subpart' => $tableindex->Sub_part);
     1256                        $index_ary[$keyname]['unique'] = ($tableindex->Non_unique == 0)?true:false;
     1257                    }
     1258
     1259                    // For each actual index in the index array
     1260                    foreach($index_ary as $index_name => $index_data) {
     1261                        // Build a create string to compare to the query
     1262                        $index_string = '';
     1263                        if($index_name == 'PRIMARY') {
     1264                            $index_string .= 'PRIMARY ';
     1265                        }
     1266                        else if($index_data['unique']) {
     1267                            $index_string .= 'UNIQUE ';
     1268                        }
     1269                        $index_string .= 'KEY ';
     1270                        if($index_name != 'PRIMARY') {
     1271                            $index_string .= $index_name;
     1272                        }
     1273                        $index_columns = '';
     1274                        // For each column in the index
     1275                        foreach($index_data['columns'] as $column_data) {                   
     1276                            if($index_columns != '') $index_columns .= ',';
     1277                            // Add the field to the column list string
     1278                            $index_columns .= $column_data['fieldname'];
     1279                            if($column_data['subpart'] != '') {
     1280                                $index_columns .= '('.$column_data['subpart'].')';
     1281                            }
     1282                        }
     1283                        // Add the column list to the index create string
     1284                        $index_string .= ' ('.$index_columns.')';
     1285
     1286                        if(!(($aindex = array_search($index_string, $indices)) === false)) {
     1287                            unset($indices[$aindex]);
     1288                            //echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">{$table}:<br/>Found index:".$index_string."</pre>\n";
     1289                        }
     1290                        //else echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">{$table}:<br/><b>Did not find index:</b>".$index_string."<br/>".print_r($indices, true)."</pre>\n";
     1291                    }
     1292                }
     1293
     1294                // For every remaining index specified for the table
     1295                foreach($indices as $index) {
     1296                    // Push a query line into $cqueries that adds the index to that table
     1297                    $cqueries[] = "ALTER TABLE {$table} ADD $index";
     1298                    $for_update[$table.'.'.$fieldname] = 'Added index '.$table.' '.$index;
     1299                }
     1300
     1301                // Remove the original table creation query from processing
     1302                unset($cqueries[strtolower($table)]);
     1303                unset($for_update[strtolower($table)]);
     1304            } else {
     1305                // This table exists in the database, but not in the creation queries?
     1306            }
     1307        }
     1308    }
     1309
     1310    $allqueries = array_merge($cqueries, $iqueries);
     1311    if($execute) {
     1312        foreach($allqueries as $query) {
     1313            //echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">".print_r($query, true)."</pre>\n";
     1314            $wpdb->query($query);
     1315        }
     1316    }
     1317
     1318    return $for_update;
     1319}
     1320
     1321function make_db_current() {
     1322    global $wp_queries;
     1323
     1324    $alterations = dbDelta($wp_queries);
     1325    echo "<ol>\n";
     1326    foreach($alterations as $alteration) echo "<li>$alteration</li>\n";
     1327    echo "</ol>\n";
     1328}
     1329
     1330function rename_field($table, $field, $new) {
     1331//  ALTER TABLE `wp_users` CHANGE `ID` `user_id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT
     1332}
     1333
     1334function remove_field($table, $field) {
     1335    global $wpdb;
     1336// ALTER TABLE `wp_users` DROP `user_domain`
    9311337}
    9321338
  • trunk/wp-admin/upgrade.php

    r1429 r1575  
    1313<head>
    1414<title>WordPress &rsaquo; Upgrade WordPress</title>
    15 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     15<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    1616<style media="screen" type="text/css">
    1717    body {
  • trunk/wp-atom.php

    r1358 r1575  
    77}
    88
    9 header('Content-type: application/atom+xml', true);
     9header('Content-type: application/atom+xml; charset=' . get_settings('blog_charset'), true);
    1010$more = 1;
    1111
  • trunk/wp-commentsrss2.php

    r1355 r1575  
    44}
    55
    6 header('Content-type: text/xml', true);
     6header('Content-type: text/xml;charset=' . get_settings('blog_charset'), true);
    77
    88echo '<?xml version="1.0" encoding="'.get_settings('blog_charset').'"?'.'>';
  • trunk/wp-includes/functions.php

    r1570 r1575  
    573573function trackback_response($error = 0, $error_message = '') {
    574574    if ($error) {
    575         echo '<?xml version="1.0" encoding="iso-8859-1"?'.">\n";
     575        echo '<?xml version="1.0" encoding="utf-8"?'.">\n";
    576576        echo "<response>\n";
    577577        echo "<error>1</error>\n";
     
    579579        echo "</response>";
    580580    } else {
    581         echo '<?xml version="1.0" encoding="iso-8859-1"?'.">\n";
     581        echo '<?xml version="1.0" encoding="utf-8"?'.">\n";
    582582        echo "<response>\n";
    583583        echo "<error>0</error>\n";
  • trunk/wp-links-opml.php

    r1355 r1575  
    11<?php
    2 $blog = 1; // Your blog's ID
    32$doing_rss = 1;
    4 header('Content-type: text/xml', true);
     3
    54require('wp-blog-header.php');
    6 
     5header('Content-type: text/xml; charset=' . get_settings('blog_charset'), true);
    76$link_cat = $_GET['link_cat'];
    87if ((empty($link_cat)) || ($link_cat == 'all') || ($link_cat == '0')) {
  • trunk/wp-locations.php

    r956 r1575  
    1 <?php $blog = 1; // enter your blog's ID
    2 header('Content-type: text/xml');
     1<?php
    32include('wp-blog-header.php');
     3header('Content-type: text/xml; charset=' . get_settings('blog_charset'));
    44?><?php echo "<?xml version=\"1.0\"?".">\n"; ?>
    55<travels>
  • trunk/wp-rdf.php

    r1358 r1575  
    77}
    88
    9 header('Content-type: application/rdf+xml', true);
     9header('Content-type: application/rdf+xml; charset=' . get_settings('blog_charset'), true);
    1010$more = 1;
    1111
  • trunk/wp-rss.php

    r1358 r1575  
    77}
    88
    9 header('Content-type: text/xml', true);
     9header('Content-type: text/xml; charset=' . get_settings('blog_charset'), true);
    1010$more = 1;
    1111
  • trunk/wp-rss2.php

    r1485 r1575  
    77}
    88
    9 header('Content-type: text/xml', true);
     9header('Content-type: text/xml; charset=' . get_settings('blog_charset'), true);
    1010$more = 1;
    1111
  • trunk/wp-trackback.php

    r1491 r1575  
    2727if ((strlen(''.$tb_id)) && (empty($_GET['__mode'])) && (strlen(''.$tb_url))) {
    2828
    29     @header('Content-Type: text/xml');
     29    @header('Content-Type: text/xml; charset=' . get_settings('blog_charset'));
    3030
    3131    if (!get_settings('use_trackback'))
Note: See TracChangeset for help on using the changeset viewer.