* @param bool $public Whether blog is public.
* @param null $deprecated Optional. Not used.
* @param string $user_password Optional. User's chosen password. Will default to a random password.
+ * @param string $language Optional. Language chosen.
* @return array Array keys 'url', 'user_id', 'password', 'password_message'.
*/
-function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated = '', $user_password = '' ) {
+function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated = '', $user_password = '', $language = '' ) {
if ( !empty( $deprecated ) )
_deprecated_argument( __FUNCTION__, '2.6' );
update_option('admin_email', $user_email);
update_option('blog_public', $public);
+ if ( $language ) {
+ update_option( 'WPLANG', $language );
+ }
+
$guessurl = wp_guess_url();
update_option('siteurl', $guessurl);
if ( ! $public )
update_option('default_pingback_flag', 0);
- // Create default user. If the user already exists, the user tables are
- // being shared among blogs. Just set the role in that case.
+ /*
+ * Create default user. If the user already exists, the user tables are
+ * being shared among blogs. Just set the role in that case.
+ */
$user_id = username_exists($user_name);
$user_password = trim($user_password);
$email_password = false;
if ( $wp_current_db_version < 26691 )
upgrade_380();
+ if ( $wp_current_db_version < 29630 )
+ upgrade_400();
+
maybe_disable_link_manager();
maybe_disable_automattic_widgets();
}
}
- $wpdb->query("UPDATE $wpdb->options SET option_value = REPLACE(option_value, 'wp-links/links-images/', 'wp-images/links/')
- WHERE option_name LIKE 'links_rating_image%'
- AND option_value LIKE 'wp-links/links-images/%'");
+ $sql = "UPDATE $wpdb->options
+ SET option_value = REPLACE(option_value, 'wp-links/links-images/', 'wp-images/links/')
+ WHERE option_name LIKE %s
+ AND option_value LIKE %s";
+ $wpdb->query( $wpdb->prepare( $sql, $wpdb->esc_like( 'links_rating_image' ) . '%', $wpdb->esc_like( 'wp-links/links-images/' ) . '%' ) );
$done_ids = $wpdb->get_results("SELECT DISTINCT post_id FROM $wpdb->post2cat");
if ($done_ids) :
$active_plugins = __get_option('active_plugins');
- // If plugins are not stored in an array, they're stored in the old
- // newline separated format. Convert to new format.
+ /*
+ * If plugins are not stored in an array, they're stored in the old
+ * newline separated format. Convert to new format.
+ */
if ( !is_array( $active_plugins ) ) {
$active_plugins = explode("\n", trim($active_plugins));
update_option('active_plugins', $active_plugins);
$wpdb->query("ALTER TABLE $wpdb->users DROP $old");
$wpdb->show_errors();
- // populate comment_count field of posts table
+ // Populate comment_count field of posts table.
$comments = $wpdb->get_results( "SELECT comment_post_ID, COUNT(*) as c FROM $wpdb->comments WHERE comment_approved = '1' GROUP BY comment_post_ID" );
if ( is_array( $comments ) )
foreach ($comments as $comment)
$wpdb->update( $wpdb->posts, array('comment_count' => $comment->c), array('ID' => $comment->comment_post_ID) );
- // Some alpha versions used a post status of object instead of attachment and put
- // the mime type in post_type instead of post_mime_type.
+ /*
+ * Some alpha versions used a post status of object instead of attachment
+ * and put the mime type in post_type instead of post_mime_type.
+ */
if ( $wp_current_db_version > 2541 && $wp_current_db_version <= 3091 ) {
$objects = $wpdb->get_results("SELECT ID, post_type FROM $wpdb->posts WHERE post_status = 'object'");
foreach ($objects as $object) {
// < 3570 we used linkcategories. >= 3570 we used categories and link2cat.
if ( $wp_current_db_version < 3570 ) {
- // Create link_category terms for link categories. Create a map of link cat IDs
- // to link_category terms.
+ /*
+ * Create link_category terms for link categories. Create a map of link
+ * cat IDs to link_category terms.
+ */
$link_cat_id_map = array();
$default_link_cat = 0;
$tt_ids = array();
* @since 2.2.0
*/
function upgrade_old_slugs() {
- // upgrade people who were using the Redirect Old Slugs plugin
+ // Upgrade people who were using the Redirect Old Slugs plugin.
global $wpdb;
$wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '_wp_old_slug' WHERE meta_key = 'old_slug'");
}
// 3.0 screen options key name changes.
if ( is_main_site() && !defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) {
- $prefix = like_escape($wpdb->base_prefix);
- $wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key LIKE '{$prefix}%meta-box-hidden%' OR meta_key LIKE '{$prefix}%closedpostboxes%' OR meta_key LIKE '{$prefix}%manage-%-columns-hidden%' OR meta_key LIKE '{$prefix}%meta-box-order%' OR meta_key LIKE '{$prefix}%metaboxorder%' OR meta_key LIKE '{$prefix}%screen_layout%'
- OR meta_key = 'manageedittagscolumnshidden' OR meta_key='managecategoriescolumnshidden' OR meta_key = 'manageedit-tagscolumnshidden' OR meta_key = 'manageeditcolumnshidden' OR meta_key = 'categories_per_page' OR meta_key = 'edit_tags_per_page'" );
+ $sql = "DELETE FROM $wpdb->usermeta
+ WHERE meta_key LIKE %s
+ OR meta_key LIKE %s
+ OR meta_key LIKE %s
+ OR meta_key LIKE %s
+ OR meta_key LIKE %s
+ OR meta_key LIKE %s
+ OR meta_key = 'manageedittagscolumnshidden'
+ OR meta_key = 'managecategoriescolumnshidden'
+ OR meta_key = 'manageedit-tagscolumnshidden'
+ OR meta_key = 'manageeditcolumnshidden'
+ OR meta_key = 'categories_per_page'
+ OR meta_key = 'edit_tags_per_page'";
+ $prefix = $wpdb->esc_like( $wpdb->base_prefix );
+ $wpdb->query( $wpdb->prepare( $sql,
+ $prefix . '%' . $wpdb->esc_like( 'meta-box-hidden' ) . '%',
+ $prefix . '%' . $wpdb->esc_like( 'closedpostboxes' ) . '%',
+ $prefix . '%' . $wpdb->esc_like( 'manage-' ) . '%' . $wpdb->esc_like( '-columns-hidden' ) . '%',
+ $prefix . '%' . $wpdb->esc_like( 'meta-box-order' ) . '%',
+ $prefix . '%' . $wpdb->esc_like( 'metaboxorder' ) . '%',
+ $prefix . '%' . $wpdb->esc_like( 'screen_layout' ) . '%'
+ ) );
}
}
deactivate_plugins( array( 'mp6/mp6.php' ), true );
}
}
+
+/**
+ * Execute changes made in WordPress 4.0.0.
+ *
+ * @since 4.0.0
+ */
+function upgrade_400() {
+ global $wp_current_db_version;
+ if ( $wp_current_db_version < 29630 ) {
+ if ( ! is_multisite() && false === get_option( 'WPLANG' ) ) {
+ if ( defined( 'WPLANG' ) && ( '' !== WPLANG ) && in_array( WPLANG, get_available_languages() ) ) {
+ update_option( 'WPLANG', WPLANG );
+ } else {
+ update_option( 'WPLANG', '' );
+ }
+ }
+ }
+}
+
/**
* Execute network level changes
*
function upgrade_network() {
global $wp_current_db_version, $wpdb;
- // Always
+ // Always.
if ( is_main_network() ) {
- // Deletes all expired transients.
- // The multi-table delete syntax is used to delete the transient record from table a,
- // and the corresponding transient_timeout record from table b.
+ /*
+ * Deletes all expired transients. The multi-table delete syntax is used
+ * to delete the transient record from table a, and the corresponding
+ * transient_timeout record from table b.
+ */
$time = time();
- $wpdb->query("DELETE a, b FROM $wpdb->sitemeta a, $wpdb->sitemeta b WHERE
- a.meta_key LIKE '\_site\_transient\_%' AND
- a.meta_key NOT LIKE '\_site\_transient\_timeout\_%' AND
- b.meta_key = CONCAT( '_site_transient_timeout_', SUBSTRING( a.meta_key, 17 ) )
- AND b.meta_value < $time");
+ $sql = "DELETE a, b FROM $wpdb->sitemeta a, $wpdb->sitemeta b
+ WHERE a.meta_key LIKE %s
+ AND a.meta_key NOT LIKE %s
+ AND b.meta_key = CONCAT( '_site_transient_timeout_', SUBSTRING( a.meta_key, 17 ) )
+ AND b.meta_value < %d";
+ $wpdb->query( $wpdb->prepare( $sql, $wpdb->esc_like( '_site_transient_' ) . '%', $wpdb->esc_like ( '_site_transient_timeout_' ) . '%', $time ) );
}
- // 2.8
+ // 2.8.
if ( $wp_current_db_version < 11549 ) {
$wpmu_sitewide_plugins = get_site_option( 'wpmu_sitewide_plugins' );
$active_sitewide_plugins = get_site_option( 'active_sitewide_plugins' );
*/
function maybe_create_table($table_name, $create_ddl) {
global $wpdb;
- if ( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name )
+
+ $query = $wpdb->prepare( "SHOW TABLES LIKE %s", $wpdb->esc_like( $table_name ) );
+
+ if ( $wpdb->get_var( $query ) == $table_name ) {
return true;
- //didn't find it try to create it.
- $q = $wpdb->query($create_ddl);
- // we cannot directly tell that whether this succeeded!
- if ( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") == $table_name )
+ }
+
+ // Didn't find it try to create it..
+ $wpdb->query($create_ddl);
+
+ // We cannot directly tell that whether this succeeded!
+ if ( $wpdb->get_var( $query ) == $table_name ) {
return true;
+ }
return false;
}
return true;
}
}
- //didn't find it try to create it.
- $q = $wpdb->query($create_ddl);
- // we cannot directly tell that whether this succeeded!
+
+ // Didn't find it try to create it.
+ $wpdb->query($create_ddl);
+
+ // We cannot directly tell that whether this succeeded!
foreach ($wpdb->get_col("DESC $table_name", 0) as $column ) {
if ($column == $column_name) {
return true;
function deslash($content) {
// Note: \\\ inside a regex denotes a single backslash.
- // Replace one or more backslashes followed by a single quote with
- // a single quote.
+ /*
+ * Replace one or more backslashes followed by a single quote with
+ * a single quote.
+ */
$content = preg_replace("/\\\+'/", "'", $content);
- // Replace one or more backslashes followed by a double quote with
- // a double quote.
+ /*
+ * Replace one or more backslashes followed by a double quote with
+ * a double quote.
+ */
$content = preg_replace('/\\\+"/', '"', $content);
// Replace one or more backslashes with one backslash.
$queries = explode( ';', $queries );
$queries = array_filter( $queries );
}
-
- /**
+
+ /**
* Filter the dbDelta SQL queries.
*
* @since 3.3.0
// Unrecognized query type
}
}
-
- /**
+
+ /**
* Filter the dbDelta SQL queries for creating tables and/or databases.
*
* Queries filterable via this hook contain "CREATE TABLE" or "CREATE DATABASE".
- *
+ *
* @since 3.3.0
*
* @param array $cqueries An array of dbDelta create SQL queries.
*/
$cqueries = apply_filters( 'dbdelta_create_queries', $cqueries );
- /**
+ /**
* Filter the dbDelta SQL queries for inserting or updating.
*
* Queries filterable via this hook contain "INSERT INTO" or "UPDATE".
- *
+ *
* @since 3.3.0
*
* @param array $iqueries An array of dbDelta insert or update SQL queries.
if ( ! $tablefields )
continue;
- // Clear the field and index arrays
+ // Clear the field and index arrays.
$cfields = $indices = array();
- // Get all of the field names in the query from between the parens
+
+ // Get all of the field names in the query from between the parentheses.
preg_match("|\((.*)\)|ms", $qry, $match2);
$qryline = trim($match2[1]);
- // Separate field lines into an array
+ // Separate field lines into an array.
$flds = explode("\n", $qryline);
+ // todo: Remove this?
//echo "<hr/><pre>\n".print_r(strtolower($table), true).":\n".print_r($cqueries, true)."</pre><hr/>";
- // For every field line specified in the query
+ // For every field line specified in the query.
foreach ($flds as $fld) {
- // Extract the field name
+
+ // Extract the field name.
preg_match("|^([^ ]*)|", trim($fld), $fvals);
$fieldname = trim( $fvals[1], '`' );
- // Verify the found field name
+ // Verify the found field name.
$validfield = true;
switch (strtolower($fieldname)) {
case '':
}
$fld = trim($fld);
- // If it's a valid field, add it to the field array
+ // If it's a valid field, add it to the field array.
if ($validfield) {
$cfields[strtolower($fieldname)] = trim($fld, ", \n");
}
}
- // For every field in the table
+ // For every field in the table.
foreach ($tablefields as $tablefield) {
- // If the table field exists in the field array...
+
+ // If the table field exists in the field array ...
if (array_key_exists(strtolower($tablefield->Field), $cfields)) {
- // Get the field type from the query
+
+ // Get the field type from the query.
preg_match("|".$tablefield->Field." ([^ ]*( unsigned)?)|i", $cfields[strtolower($tablefield->Field)], $matches);
$fieldtype = $matches[1];
}
// Get the default value from the array
+ // todo: Remove this?
//echo "{$cfields[strtolower($tablefield->Field)]}<br>";
if (preg_match("| DEFAULT '(.*?)'|i", $cfields[strtolower($tablefield->Field)], $matches)) {
$default_value = $matches[1];
}
}
- // Remove the field from the array (so it's not added)
+ // Remove the field from the array (so it's not added).
unset($cfields[strtolower($tablefield->Field)]);
} else {
// This field exists in the table, but not in the creation queries?
}
}
- // For every remaining field specified for the table
+ // For every remaining field specified for the table.
foreach ($cfields as $fieldname => $fielddef) {
- // Push a query line into $cqueries that adds the field to that table
+ // Push a query line into $cqueries that adds the field to that table.
$cqueries[] = "ALTER TABLE {$table} ADD COLUMN $fielddef";
$for_update[$table.'.'.$fieldname] = 'Added column '.$table.'.'.$fieldname;
}
- // Index stuff goes here
- // Fetch the table index structure from the database
+ // Index stuff goes here. Fetch the table index structure from the database.
$tableindices = $wpdb->get_results("SHOW INDEX FROM {$table};");
if ($tableindices) {
- // Clear the index array
+ // Clear the index array.
unset($index_ary);
- // For every index in the table
+ // For every index in the table.
foreach ($tableindices as $tableindex) {
- // Add the index to the index data array
+
+ // Add the index to the index data array.
$keyname = $tableindex->Key_name;
$index_ary[$keyname]['columns'][] = array('fieldname' => $tableindex->Column_name, 'subpart' => $tableindex->Sub_part);
$index_ary[$keyname]['unique'] = ($tableindex->Non_unique == 0)?true:false;
}
- // For each actual index in the index array
+ // For each actual index in the index array.
foreach ($index_ary as $index_name => $index_data) {
- // Build a create string to compare to the query
+
+ // Build a create string to compare to the query.
$index_string = '';
if ($index_name == 'PRIMARY') {
$index_string .= 'PRIMARY ';
$index_string .= $index_name;
}
$index_columns = '';
- // For each column in the index
+
+ // For each column in the index.
foreach ($index_data['columns'] as $column_data) {
if ($index_columns != '') $index_columns .= ',';
- // Add the field to the column list string
+
+ // Add the field to the column list string.
$index_columns .= $column_data['fieldname'];
if ($column_data['subpart'] != '') {
$index_columns .= '('.$column_data['subpart'].')';
}
}
- // Add the column list to the index create string
+ // Add the column list to the index create string.
$index_string .= ' ('.$index_columns.')';
if (!(($aindex = array_search($index_string, $indices)) === false)) {
unset($indices[$aindex]);
+ // todo: Remove this?
//echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">{$table}:<br />Found index:".$index_string."</pre>\n";
}
+ // todo: Remove this?
//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";
}
}
- // For every remaining index specified for the table
+ // For every remaining index specified for the table.
foreach ( (array) $indices as $index ) {
- // Push a query line into $cqueries that adds the index to that table
+ // Push a query line into $cqueries that adds the index to that table.
$cqueries[] = "ALTER TABLE {$table} ADD $index";
$for_update[] = 'Added index ' . $table . ' ' . $index;
}
- // Remove the original table creation query from processing
+ // Remove the original table creation query from processing.
unset( $cqueries[ $table ], $for_update[ $table ] );
}
$allqueries = array_merge($cqueries, $iqueries);
if ($execute) {
foreach ($allqueries as $query) {
+ // todo: Remove this?
//echo "<pre style=\"border:1px solid #ccc;margin-top:5px;\">".print_r($query, true)."</pre>\n";
$wpdb->query($query);
}
* @since 1.5.0
*/
function make_db_current_silent( $tables = 'all' ) {
- $alterations = dbDelta( $tables );
+ dbDelta( $tables );
}
/**
if (! file_exists("$home_path/index.php"))
return false;
- // Copy files from the old locations to the site theme.
- // TODO: This does not copy arbitrary include dependencies. Only the
- // standard WP files are copied.
+ /*
+ * Copy files from the old locations to the site theme.
+ * TODO: This does not copy arbitrary include dependencies. Only the standard WP files are copied.
+ */
$files = array('index.php' => 'index.php', 'wp-layout.css' => 'style.css', 'wp-comments.php' => 'comments.php', 'wp-comments-popup.php' => 'comments-popup.php');
foreach ($files as $oldfile => $newfile) {
else
$oldpath = ABSPATH;
- if ($oldfile == 'index.php') { // Check to make sure it's not a new index
+ // Check to make sure it's not a new index.
+ if ($oldfile == 'index.php') {
$index = implode('', file("$oldpath/$oldfile"));
if (strpos($index, 'WP_USE_THEMES') !== false) {
if (! @copy(WP_CONTENT_DIR . '/themes/' . WP_DEFAULT_THEME . '/index.php', "$site_dir/$newfile"))
return false;
- continue; // Don't copy anything
+
+ // Don't copy anything.
+ continue;
}
}