diff --git a/owark.php b/owark.php index 1648af7..1af8b9e 100644 --- a/owark.php +++ b/owark.php @@ -76,8 +76,8 @@ if (!class_exists("Owark")) { private $broken_links = array(); private $post_id = -1; private $post_type = ""; - private $version = '0.2'; - private $db_version = '0.2'; + private $version = '1.0'; + private $db_version = '1.0'; private $notices = ""; /** @@ -149,14 +149,22 @@ if (!class_exists("Owark")) { // Install or upgrade tables if needed $installed_ver = get_option( "owark_db_version" ); + $update_required = ($installed_ver != $this->db_version); + print_r_log("update_required: $update_required ($installed_ver vs {$this->db_version})"); global $wpdb; $table = $wpdb->prefix."owark"; if ($installed_ver == '0.1') { // In version 0.1 final URLs where used but the broken link checkers update these URLs when a link is detected broken - $table_links = $wpdb->prefix."blc_links"; - $sql = "update $table as owark join $table_links as links on owark.url = links.final_url COLLATE latin1_swedish_ci set owark.url = links.url COLLATE latin1_swedish_ci"; + // Let's replace these URLS by raw URLs... + $sql = "update + {$wpdb->prefix}owark as owark + join {$wpdb->prefix}blc_links as links on + owark.url = links.final_url COLLATE latin1_swedish_ci + join {$wpdb->prefix}blc_instances as instances on + instances.link_id = links.link_id set + owark.url = instances.raw_url "; $wpdb->query($sql); - $installed_ver = '0.2'; + $installed_ver = '1.0'; update_option( "owark_db_version", $installed_ver ); } if ($installed_ver != $this->db_version) { @@ -168,13 +176,50 @@ if (!class_exists("Owark")) { arc_date datetime, arc_location text, encoding varchar(10), - PRIMARY KEY(`id`), - KEY `url` (`url`(150)) )"; + PRIMARY KEY (id), + KEY url (`url`(150)) )"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); update_option( "owark_db_version", $this->db_version ); + } + + if ($update_required) { + $sql = "CREATE OR REPLACE VIEW {$wpdb->prefix}owark_broken_links AS + SELECT + owark.id as id, + instances.raw_url as url, + instances.container_id as container_id, + instances.container_type as container_type, + instances.container_field as container_field + FROM + {$wpdb->prefix}owark as owark, + {$wpdb->prefix}blc_links as links, + {$wpdb->prefix}blc_instances AS instances + WHERE + owark.url = instances.raw_url + AND instances.link_id = links.link_id + AND broken = 1 + AND last_check is not null + AND instances.link_id = links.link_id"; + print_r_log("sql: $sql"); + $wpdb->query($sql); + $sql = "CREATE OR REPLACE VIEW {$wpdb->prefix}owark_links_to_ckeck AS + SELECT + DISTINCT instances.raw_url as url + FROM + {$wpdb->prefix}blc_links as links, + {$wpdb->prefix}blc_instances AS instances + WHERE + instances.link_id = links.link_id + AND broken = 0 + AND instances.link_id = links.link_id + AND url NOT IN (SELECT url FROM wp_owark)"; + print_r_log("sql: $sql"); + $wpdb->query($sql); + $this->notices = "

The owark table has been installed or upgraded to version {$this->db_version}

"; + }