diff -r 3d4e9c994f10 -r a86126ab1dd4 wp/wp-admin/install-helper.php --- a/wp/wp-admin/install-helper.php Tue Oct 22 16:11:46 2019 +0200 +++ b/wp/wp-admin/install-helper.php Tue Dec 15 13:49:49 2020 +0100 @@ -3,7 +3,7 @@ * Plugins may load this file to gain access to special helper functions for * plugin installation. This file is not included by WordPress and it is * recommended, to prevent fatal errors, that this file is included using - * require_once(). + * require_once. * * These functions are not optimized for speed, but they should only be used * once in a while, so speed shouldn't be a concern. If it is and you are @@ -18,7 +18,7 @@ * $error_count = 0; * $tablename = $wpdb->links; * // Check the column. - * if ( ! check_column($wpdb->links, 'link_description', 'varchar( 255 )' ) ) { + * if ( ! check_column( $wpdb->links, 'link_description', 'varchar( 255 )' ) ) { * $ddl = "ALTER TABLE $wpdb->links MODIFY COLUMN link_description varchar(255) NOT NULL DEFAULT '' "; * $q = $wpdb->query( $ddl ); * } @@ -35,58 +35,61 @@ */ /** Load WordPress Bootstrap */ -require_once( dirname( dirname( __FILE__ ) ) . '/wp-load.php' ); +require_once dirname( __DIR__ ) . '/wp-load.php'; if ( ! function_exists( 'maybe_create_table' ) ) : /** - * Create database table, if it doesn't already exist. + * Creates a table in the database if it doesn't already exist. * * @since 1.0.0 * * @global wpdb $wpdb WordPress database abstraction object. * * @param string $table_name Database table name. - * @param string $create_ddl Create database table SQL. - * @return bool False on error, true if already exists or success. + * @param string $create_ddl SQL statement to create table. + * @return bool True on success or if the table already exists. False on failure. */ function maybe_create_table( $table_name, $create_ddl ) { global $wpdb; + foreach ( $wpdb->get_col( 'SHOW TABLES', 0 ) as $table ) { - if ( $table == $table_name ) { + if ( $table === $table_name ) { return true; } } + // Didn't find it, so try to create it. $wpdb->query( $create_ddl ); // We cannot directly tell that whether this succeeded! foreach ( $wpdb->get_col( 'SHOW TABLES', 0 ) as $table ) { - if ( $table == $table_name ) { + if ( $table === $table_name ) { return true; } } + return false; } endif; if ( ! function_exists( 'maybe_add_column' ) ) : /** - * Add column to database table, if column doesn't already exist in table. + * Adds column to database table, if it doesn't already exist. * * @since 1.0.0 * * @global wpdb $wpdb WordPress database abstraction object. * - * @param string $table_name Database table name - * @param string $column_name Table column name - * @param string $create_ddl SQL to add column to table. - * @return bool False on failure. True, if already exists or was successful. + * @param string $table_name Database table name. + * @param string $column_name Table column name. + * @param string $create_ddl SQL statement to add column. + * @return bool True on success or if the column already exists. False on failure. */ function maybe_add_column( $table_name, $column_name, $create_ddl ) { global $wpdb; + foreach ( $wpdb->get_col( "DESC $table_name", 0 ) as $column ) { - - if ( $column == $column_name ) { + if ( $column === $column_name ) { return true; } } @@ -96,48 +99,51 @@ // We cannot directly tell that whether this succeeded! foreach ( $wpdb->get_col( "DESC $table_name", 0 ) as $column ) { - if ( $column == $column_name ) { + if ( $column === $column_name ) { return true; } } + return false; } endif; /** - * Drop column from database table, if it exists. + * Drops column from database table, if it exists. * * @since 1.0.0 * * @global wpdb $wpdb WordPress database abstraction object. * - * @param string $table_name Table name - * @param string $column_name Column name - * @param string $drop_ddl SQL statement to drop column. - * @return bool False on failure, true on success or doesn't exist. + * @param string $table_name Database table name. + * @param string $column_name Table column name. + * @param string $drop_ddl SQL statement to drop column. + * @return bool True on success or if the column doesn't exist. False on failure. */ function maybe_drop_column( $table_name, $column_name, $drop_ddl ) { global $wpdb; + foreach ( $wpdb->get_col( "DESC $table_name", 0 ) as $column ) { - if ( $column == $column_name ) { + if ( $column === $column_name ) { // Found it, so try to drop it. $wpdb->query( $drop_ddl ); // We cannot directly tell that whether this succeeded! foreach ( $wpdb->get_col( "DESC $table_name", 0 ) as $column ) { - if ( $column == $column_name ) { + if ( $column === $column_name ) { return false; } } } } + // Else didn't find it. return true; } /** - * Check column matches criteria. + * Checks that database table column matches the criteria. * * Uses the SQL DESC for retrieving the table info for the column. It will help * understand the parameters, if you do more research on what column information @@ -156,9 +162,9 @@ * * @global wpdb $wpdb WordPress database abstraction object. * - * @param string $table_name Table name - * @param string $col_name Column name - * @param string $col_type Column type + * @param string $table_name Database table name. + * @param string $col_name Table column name. + * @param string $col_type Table column type. * @param bool $is_null Optional. Check is null. * @param mixed $key Optional. Key info. * @param mixed $default Optional. Default value. @@ -167,34 +173,38 @@ */ function check_column( $table_name, $col_name, $col_type, $is_null = null, $key = null, $default = null, $extra = null ) { global $wpdb; + $diffs = 0; $results = $wpdb->get_results( "DESC $table_name" ); foreach ( $results as $row ) { - if ( $row->Field == $col_name ) { + if ( $row->Field === $col_name ) { // Got our column, check the params. - if ( ( $col_type != null ) && ( $row->Type != $col_type ) ) { + if ( ( null !== $col_type ) && ( $row->Type !== $col_type ) ) { ++$diffs; } - if ( ( $is_null != null ) && ( $row->Null != $is_null ) ) { + if ( ( null !== $is_null ) && ( $row->Null !== $is_null ) ) { ++$diffs; } - if ( ( $key != null ) && ( $row->Key != $key ) ) { + if ( ( null !== $key ) && ( $row->Key !== $key ) ) { ++$diffs; } - if ( ( $default != null ) && ( $row->Default != $default ) ) { + if ( ( null !== $default ) && ( $row->Default !== $default ) ) { ++$diffs; } - if ( ( $extra != null ) && ( $row->Extra != $extra ) ) { + if ( ( null !== $extra ) && ( $row->Extra !== $extra ) ) { ++$diffs; } + if ( $diffs > 0 ) { return false; } + return true; - } // end if found our column + } // End if found our column. } + return false; }