public static function fix_duplicate_services() { global $wpdb; $services = self::find_duplicate_services(); if (!is_array($services) || empty($services)) { Repair::add_to_repair_log(__('Services did not need repair', 'podlove')); return; } foreach ($services as $service) { # update contributor services $sql = "UPDATE " . ContributorService::table_name() . " SET service_id = " . $service['id'] . " WHERE service_id IN (\n\t\t\t\tSELECT id FROM " . Service::table_name() . " WHERE `type` = \"" . $service['type'] . "\"\n\t\t\t)"; $wpdb->query($sql); # update show services $sql = "UPDATE " . Model\ShowService::table_name() . " SET service_id = " . $service['id'] . " WHERE service_id IN (\n\t\t\t\tSELECT id FROM " . Service::table_name() . " WHERE `type` = \"" . $service['type'] . "\"\n\t\t\t)"; $wpdb->query($sql); # delete obsolete services $sql = "DELETE FROM " . Service::table_name() . " WHERE id != " . $service['id'] . " AND `type` = \"" . $service['type'] . "\""; $wpdb->query($sql); } Repair::add_to_repair_log(sprintf(__('Consolidated duplicate services (%s)', 'podlove'), implode(', ', array_map(function ($s) { return $s['type']; }, $services)))); }