#!/usr/bin/php get_var($wpdb->prepare(" SELECT MAX(ID) FROM $wpdb->posts WHERE post_type != 'revision' AND post_status = 'publish' AND comment_count > 0 AND ID > %d ", $post_id)); print_line('Max post id is %d', $max_post_id); while ($post_id < $max_post_id) { $start = microtime(); $post = $wpdb->get_results($wpdb->prepare(" SELECT * FROM $wpdb->posts WHERE post_type != 'revision' AND post_status = 'publish' AND comment_count > 0 AND ID > %d ORDER BY ID ASC LIMIT 1 ", $post_id)); $post = $post[0]; $post_id = $post->ID; print_line(' Exporting comments for post id %d', $post_id); $response = null; $query = $wpdb->get_results( $wpdb->prepare("SELECT COUNT(*) as total FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%' LIMIT ".EXPORT_CHUNK_SIZE, $post_id) ); $total_comments = $query[0]->total; $comments = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%' LIMIT ".EXPORT_CHUNK_SIZE, $post_id) ); $group_id = null; $at = 0; // we need to send empty files to ensure EOF happens while (($at === 0 && $post_id == $max_post_id) || $at < $total_comments) { if ($post_id == $max_post_id && ($at + EXPORT_CHUNK_SIZE) >= $total_comments) { $eof = 1; } $wxr = dsq_export_wp($post, $comments); $response = $dsq_api->import_wordpress_comments($wxr, $timestamp, $eof); if (!($response['group_id'] > 0)) { print_line('---------------------------------------------------------'); print_line('There was an error communicating with DISQUS!'); print_line($dsq_api->get_last_error()); print_line('---------------------------------------------------------'); } $group_id = $response['group_id']; print_line(' %d comments exported', count($comments), $time); $total_exported += count($comments); $at += EXPORT_CHUNK_SIZE; $comments = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%' LIMIT ".EXPORT_CHUNK_SIZE." OFFSET {$at}", $post->ID) ); // assuming the cache is the internal, reset it's value to empty to avoid // large memory consumption $wp_object_cache->cache = array(); } $time = abs(microtime() - $start); print_line(' Done! (took %.2fs)', $time); } $total_time = abs(microtime() - $global_start); print_line('---------------------------------------------------------'); print_line('Done (processing took %.2fs)! %d comments were sent to DISQUS', $total_time, $total_exported); if ($group_id) { print_line(''); print_line('Status available at http://import.disqus.com/group/%d/', $group_id); } print_line('---------------------------------------------------------'); ?>