home *** CD-ROM | disk | FTP | other *** search
- <?php
- $wp_only_load_config = true;
- require_once(dirname(dirname(__FILE__)).'/wp-load.php');
- $debug = 0;
-
- /**
- ** maybe_create_table()
- ** Create db table if it doesn't exist.
- ** Returns: true if already exists or on successful completion
- ** false on error
- */
- if ( ! function_exists('maybe_create_table') ) :
- 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 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) {
- return true;
- }
- }
- return false;
- }
- endif;
-
- /**
- ** maybe_add_column()
- ** Add column to db table if it doesn't exist.
- ** Returns: true if already exists or on successful completion
- ** false on error
- */
- if ( ! function_exists('maybe_add_column') ) :
- function maybe_add_column($table_name, $column_name, $create_ddl) {
- global $wpdb, $debug;
- foreach ($wpdb->get_col("DESC $table_name",0) as $column ) {
- if ($debug) echo("checking $column == $column_name<br />");
- if ($column == $column_name) {
- return true;
- }
- }
- //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;
- }
- }
- return false;
- }
- endif;
-
- /**
- ** maybe_drop_column()
- ** Drop column from db table if it exists.
- ** Returns: true if it doesn't already exist or on successful drop
- ** false on error
- */
- 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) {
- //found it 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) {
- return false;
- }
- }
- }
- }
- // else didn't find it
- return true;
- }
-
-
- /**
- ** check_column()
- ** Check column matches passed in criteria.
- ** Pass in null to skip checking that criteria
- ** Returns: true if it matches
- ** false otherwise
- ** (case sensitive) Column names returned from DESC table are:
- ** Field
- ** Type
- ** Null
- ** Key
- ** Default
- ** Extra
- */
- function check_column($table_name, $col_name, $col_type, $is_null = null, $key = null, $default = null, $extra = null) {
- global $wpdb, $debug;
- $diffs = 0;
- $results = $wpdb->get_results("DESC $table_name");
-
- foreach ($results as $row ) {
- if ($debug > 1) print_r($row);
- if ($row->Field == $col_name) {
- // got our column, check the params
- if ($debug) echo ("checking $row->Type against $col_type\n");
- if (($col_type != null) && ($row->Type != $col_type)) {
- ++$diffs;
- }
- if (($is_null != null) && ($row->Null != $is_null)) {
- ++$diffs;
- }
- if (($key != null) && ($row->Key != $key)) {
- ++$diffs;
- }
- if (($default != null) && ($row->Default != $default)) {
- ++$diffs;
- }
- if (($extra != null) && ($row->Extra != $extra)) {
- ++$diffs;
- }
- if ($diffs > 0) {
- if ($debug) echo ("diffs = $diffs returning false\n");
- return false;
- }
- return true;
- } // end if found our column
- }
- return false;
- }
-
- /*
- echo "<p>testing</p>";
- echo "<pre>";
-
- //check_column('wp_links', 'link_description', 'mediumtext');
- //if (check_column($wpdb->comments, 'comment_author', 'tinytext'))
- // echo "ok\n";
- $error_count = 0;
- $tablename = $wpdb->links;
- // 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);
- }
- if (check_column($wpdb->links, 'link_description', 'varchar(255)')) {
- $res .= $tablename . ' - ok <br />';
- } else {
- $res .= 'There was a problem with ' . $tablename . '<br />';
- ++$error_count;
- }
- echo "</pre>";
- */
- ?>
-