<?php /** * 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. * * 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 * needing to use these functions a lot, you might experience timeouts. * If you do, then it is advised to just write the SQL code yourself. * * check_column( 'wp_links', 'link_description', 'mediumtext' ); * * if ( check_column( $wpdb->comments, 'comment_author', 'tinytext' ) ) { * echo "ok\n"; * } * * // Check the column. * 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 ); * } * * $error_count = 0; * $tablename = $wpdb->links; * * if ( check_column( $wpdb->links, 'link_description', 'varchar( 255 )' ) ) { * $res .= $tablename . ' - ok <br />'; * } else { * $res .= 'There was a problem with ' . $tablename . '<br />'; * ++$error_count; * } * * @package WordPress * @subpackage Plugin */ /** Load WordPress Bootstrap */ require_once dirname( __DIR__ ) . '/wp-load.php'; if ( ! function_exists( 'maybe_create_table' ) ) : /** * 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 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 ) { return true; } } // Didn't find it, so try to create it. // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- No applicable variables for this query. $wpdb->query( $create_ddl ); // We cannot directly tell whether this succeeded! foreach ( $wpdb->get_col( 'SHOW TABLES', 0 ) as $table ) { if ( $table === $table_name ) { return true; } } return false; } endif; if ( ! function_exists( 'maybe_add_column' ) ) : /** * 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 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; // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Cannot be prepared. Fetches columns for table names. foreach ( $wpdb->get_col( "DESC $table_name", 0 ) as $column ) { if ( $column === $column_name ) { return true; } } // Didn't find it, so try to create it. // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- No applicable variables for this query. $wpdb->query( $create_ddl ); // We cannot directly tell whether this succeeded! // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Cannot be prepared. Fetches columns for table names. foreach ( $wpdb->get_col( "DESC $table_name", 0 ) as $column ) { if ( $column === $column_name ) { return true; } } return false; } endif; /** * Drops column from database table, if it exists. * * @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 $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; // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Cannot be prepared. Fetches columns for table names. foreach ( $wpdb->get_col( "DESC $table_name", 0 ) as $column ) { if ( $column === $column_name ) { // Found it, so try to drop it. // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- No applicable variables for this query. $wpdb->query( $drop_ddl ); // We cannot directly tell whether this succeeded! // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Cannot be prepared. Fetches columns for table names. foreach ( $wpdb->get_col( "DESC $table_name", 0 ) as $column ) { if ( $column === $column_name ) { return false; } } } } // Else didn't find it. return true; } /** * 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 * is returned by the SQL statement. Pass in null to skip checking that criteria. * * Column names returned from DESC table are case sensitive and are as listed: * * - Field * - Type * - Null * - Key * - Default * - Extra * * @since 1.0.0 * * @global wpdb $wpdb WordPress database abstraction object. * * @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_value Optional. Default value. * @param mixed $extra Optional. Extra value. * @return bool True, if matches. False, if not matching. */ function check_column( $table_name, $col_name, $col_type, $is_null = null, $key = null, $default_value = null, $extra = null ) { global $wpdb; $diffs = 0; // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Cannot be prepared. Fetches columns for table names. $results = $wpdb->get_results( "DESC $table_name" ); foreach ( $results as $row ) { if ( $row->Field === $col_name ) { // Got our column, check the params. if ( ( null !== $col_type ) && ( $row->Type !== $col_type ) ) { ++$diffs; } if ( ( null !== $is_null ) && ( $row->Null !== $is_null ) ) { ++$diffs; } if ( ( null !== $key ) && ( $row->Key !== $key ) ) { ++$diffs; } if ( ( null !== $default_value ) && ( $row->Default !== $default_value ) ) { ++$diffs; } if ( ( null !== $extra ) && ( $row->Extra !== $extra ) ) { ++$diffs; } if ( $diffs > 0 ) { return false; } return true; } // End if found our column. } return false; }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
css | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
includes | Folder | 0755 |
|
|
js | Folder | 0755 |
|
|
maint | Folder | 0755 |
|
|
network | Folder | 0755 |
|
|
user | Folder | 0755 |
|
|
.rnd | File | 1 KB | 0644 |
|
about.php | File | 15.95 KB | 0644 |
|
admin-ajax.php | File | 5.03 KB | 0644 |
|
admin-footer.php | File | 2.77 KB | 0644 |
|
admin-functions.php | File | 406 B | 0644 |
|
admin-header.php | File | 8.86 KB | 0644 |
|
admin-post.php | File | 2.02 KB | 0644 |
|
admin.php | File | 12.27 KB | 0644 |
|
async-upload.php | File | 4.71 KB | 0644 |
|
authorize-application.php | File | 10.09 KB | 0644 |
|
comment.php | File | 11.35 KB | 0644 |
|
contribute.php | File | 5.59 KB | 0644 |
|
credits.php | File | 3.75 KB | 0644 |
|
custom-background.php | File | 416 B | 0644 |
|
custom-header.php | File | 426 B | 0644 |
|
customize.php | File | 10.87 KB | 0644 |
|
edit-comments.php | File | 14.38 KB | 0644 |
|
edit-form-advanced.php | File | 28.86 KB | 0644 |
|
edit-form-blocks.php | File | 12.96 KB | 0644 |
|
edit-form-comment.php | File | 8.34 KB | 0644 |
|
edit-link-form.php | File | 6.21 KB | 0644 |
|
edit-tag-form.php | File | 10.44 KB | 0644 |
|
edit-tags.php | File | 21.92 KB | 0644 |
|
edit.php | File | 19.48 KB | 0644 |
|
erase-personal-data.php | File | 7.33 KB | 0644 |
|
error_log | File | 12.54 MB | 0644 |
|
export-personal-data.php | File | 7.75 KB | 0644 |
|
export.php | File | 11.02 KB | 0644 |
|
freedoms.php | File | 4.5 KB | 0644 |
|
import.php | File | 7.48 KB | 0644 |
|
index.php | File | 7.68 KB | 0644 |
|
install-helper.php | File | 6.8 KB | 0644 |
|
install.php | File | 17.1 KB | 0644 |
|
link-add.php | File | 938 B | 0644 |
|
link-manager.php | File | 4.26 KB | 0644 |
|
link-parse-opml.php | File | 2.63 KB | 0644 |
|
link.php | File | 2.89 KB | 0644 |
|
load-scripts.php | File | 2.02 KB | 0644 |
|
load-styles.php | File | 2.92 KB | 0644 |
|
media-new.php | File | 3.18 KB | 0644 |
|
media-upload.php | File | 3.49 KB | 0644 |
|
media.php | File | 819 B | 0644 |
|
menu-header.php | File | 9.83 KB | 0644 |
|
menu.php | File | 16.67 KB | 0644 |
|
moderation.php | File | 307 B | 0644 |
|
ms-admin.php | File | 196 B | 0644 |
|
ms-delete-site.php | File | 4.19 KB | 0644 |
|
ms-edit.php | File | 216 B | 0644 |
|
ms-options.php | File | 229 B | 0644 |
|
ms-sites.php | File | 215 B | 0644 |
|
ms-themes.php | File | 217 B | 0644 |
|
ms-upgrade-network.php | File | 219 B | 0644 |
|
ms-users.php | File | 215 B | 0644 |
|
my-sites.php | File | 4.74 KB | 0644 |
|
nav-menus.php | File | 48.12 KB | 0644 |
|
network.php | File | 5.39 KB | 0644 |
|
options-discussion.php | File | 15.4 KB | 0644 |
|
options-general.php | File | 21.51 KB | 0644 |
|
options-head.php | File | 548 B | 0644 |
|
options-media.php | File | 6.35 KB | 0644 |
|
options-permalink.php | File | 21.21 KB | 0644 |
|
options-privacy.php | File | 9.95 KB | 0644 |
|
options-reading.php | File | 10.03 KB | 0644 |
|
options-writing.php | File | 9.1 KB | 0644 |
|
options.php | File | 13.45 KB | 0644 |
|
php.ini | File | 92 B | 0644 |
|
plugin-editor.php | File | 13.42 KB | 0644 |
|
plugin-install.php | File | 6.96 KB | 0644 |
|
plugins.php | File | 30.01 KB | 0644 |
|
post-new.php | File | 2.7 KB | 0644 |
|
post.php | File | 9.97 KB | 0644 |
|
press-this.php | File | 2.34 KB | 0644 |
|
privacy-policy-guide.php | File | 3.67 KB | 0644 |
|
privacy.php | File | 2.48 KB | 0644 |
|
profile.php | File | 283 B | 0644 |
|
revision.php | File | 5.71 KB | 0644 |
|
setup-config.php | File | 17.48 KB | 0644 |
|
site-editor.php | File | 7.05 KB | 0644 |
|
site-health-info.php | File | 3.99 KB | 0644 |
|
site-health.php | File | 10.2 KB | 0644 |
|
term.php | File | 2.2 KB | 0644 |
|
theme-editor.php | File | 15.42 KB | 0644 |
|
theme-install.php | File | 23.37 KB | 0644 |
|
themes.php | File | 46.95 KB | 0644 |
|
tools.php | File | 3.43 KB | 0644 |
|
update-core.php | File | 45.43 KB | 0644 |
|
update.php | File | 12.79 KB | 0644 |
|
upgrade-functions.php | File | 341 B | 0644 |
|
upgrade.php | File | 5.57 KB | 0644 |
|
upload.php | File | 14.85 KB | 0644 |
|
user-edit.php | File | 39.6 KB | 0644 |
|
user-new.php | File | 23.97 KB | 0644 |
|
users.php | File | 23.29 KB | 0644 |
|
widgets-form-blocks.php | File | 4.97 KB | 0644 |
|
widgets-form.php | File | 19.17 KB | 0644 |
|
widgets.php | File | 1.09 KB | 0644 |
|