Disqus Comment System - Version 2.46

Version Description

Download this release

Release Info

Developer Disqus
Plugin Icon Disqus Comment System
Version 2.46
Comparing to
See all releases

Code changes from version 2.45 to 2.46

Files changed (6) hide show
  1. comments.php +2 -0
  2. disqus.php +127 -17
  3. export.php +2 -0
  4. lib/wpapi.php +2 -0
  5. manage.php +21 -2
  6. readme.txt +10 -1
comments.php CHANGED
@@ -62,10 +62,12 @@
62
  // clear out the container (its filled for SEO/legacy purposes)
63
  document.getElementById(disqus_container_id).innerHTML = '';
64
  });
 
65
  config.callbacks.onReady.push(function() {
66
  // sync comments in the background so we don't block the page
67
  DISQUS.request.get('?cf_action=sync_comments&post_id=<?php echo $post->ID; ?>');
68
  });
 
69
  };
70
  var facebookXdReceiverPath = '<?php echo DSQ_PLUGIN_URL . '/xd_receiver.htm' ?>';
71
  </script>
62
  // clear out the container (its filled for SEO/legacy purposes)
63
  document.getElementById(disqus_container_id).innerHTML = '';
64
  });
65
+ <?php if (!get_option('disqus_manual_sync')): ?>
66
  config.callbacks.onReady.push(function() {
67
  // sync comments in the background so we don't block the page
68
  DISQUS.request.get('?cf_action=sync_comments&post_id=<?php echo $post->ID; ?>');
69
  });
70
+ <?php endif; ?>
71
  };
72
  var facebookXdReceiverPath = '<?php echo DSQ_PLUGIN_URL . '/xd_receiver.htm' ?>';
73
  </script>
disqus.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Disqus Comment System
4
  Plugin URI: http://disqus.com/
5
  Description: The Disqus comment system replaces your WordPress comment system with your comments hosted and powered by Disqus. Head over to the Comments admin page to set up your DISQUS Comment System.
6
  Author: Disqus <team@disqus.com>
7
- Version: 2.45
8
  Author URI: http://disqus.com/
9
  */
10
 
@@ -63,7 +63,7 @@ define('DSQ_PLUGIN_URL', WP_CONTENT_URL . '/plugins/' . dsq_plugin_basename(__FI
63
  * @global string $dsq_version
64
  * @since 1.0
65
  */
66
- $dsq_version = '2.45';
67
  $mt_dsq_version = '2.01';
68
  /**
69
  * Response from Disqus get_thread API call for comments template.
@@ -193,7 +193,7 @@ function dsq_sync_comments($post, $comments) {
193
  if ( !$last_comment_date ) {
194
  $last_comment_date = 0;
195
  }
196
-
197
  foreach ( $comments as $comment ) {
198
  $ts = strtotime($comment->created_at);
199
  if ( $comment->imported ) {
@@ -284,9 +284,10 @@ function dsq_request_handler() {
284
  }
285
  // schedule the event for 30 seconds from now in case they
286
  // happen to make a quick post
 
 
287
  wp_schedule_single_event(time(), 'dsq_sync_post', array($post_id));
288
- //dsq_sync_post($post_id);
289
- die('');
290
  break;
291
  case 'export_comments':
292
  if (current_user_can('manage_options') && DISQUS_CAN_EXPORT) {
@@ -322,31 +323,93 @@ function dsq_request_handler() {
322
  else {
323
  $status = 'partial';
324
  if (count($posts) == 1) {
325
- $msg = 'Processed comments on post #'.$first_post_id.'&hellip;';
326
  }
327
  else {
328
- $msg = 'Processed comments on posts #'.$first_post_id.'-'.$last_post_id.'&hellip;';
329
  }
330
  }
331
  $result = 'fail';
 
332
  if (count($posts)) {
333
  include_once(dirname(__FILE__) . '/export.php');
334
  $wxr = dsq_export_wp($posts);
335
  $response = $dsq_api->import_wordpress_comments($wxr, $timestamp, $eof);
336
  if (!($response['group_id'] > 0)) {
337
  $result = 'fail';
338
- $msg = '<p class="status dsq-export-fail">Sorry, something unexpected happened with the export. Please <a href="#" id="dsq_export_retry">try again</a></p><p>If your API key has changed, you may need to reinstall Disqus (deactivate the plugin and then reactivate it). If you are still having issues, refer to the <a href="http://disqus.com/help/wordpress" onclick="window.open(this.href); return false">WordPress help page</a>.</p>';
 
339
  }
340
  else {
341
  if ($eof) {
342
- $msg = 'Your comments have been sent to Disqus and queued for import!<br/><a href="'.$response['link'].'" target="_blank">See the status of your import at Disqus</a>';
343
 
344
  }
345
  $result = 'success';
346
  }
347
  }
348
  // send AJAX response
349
- $response = compact('result', 'timestamp', 'status', 'last_post_id', 'msg', 'eof');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
  header('Content-type: text/javascript');
351
  echo cf_json_encode($response);
352
  die();
@@ -367,7 +430,7 @@ function dsq_sync_post($post_id) {
367
  dsq_update_permalink($post);
368
 
369
  // get_thread should limit based on last comment date
370
- $last_comment_id = $wpdb->get_var($wpdb->prepare( "SELECT cm.comment_id FROM $wpdb->commentmeta as cm INNER JOIN $wpdb->comments as c ON c.comment_ID = cm.comment_id WHERE cm.meta_key = 'dsq_post_id' ORDER BY cm.meta_value LIMIT 1"));
371
  if (!$last_comment_id) {
372
  $last_comment_id = 0;
373
  } else {
@@ -376,12 +439,12 @@ function dsq_sync_post($post_id) {
376
 
377
  // Pull comments from API
378
  $dsq_response = $dsq_api->get_thread($post, $last_comment_id);
379
- if( $dsq_response < 0 ) {
380
- header("HTTP/1.0 500 Internal Server Error");
381
- return;
382
  }
383
  // Sync comments with database.
384
  dsq_sync_comments($post, $dsq_response);
 
385
  }
386
 
387
  add_action('dsq_sync_post', 'dsq_sync_post');
@@ -682,15 +745,20 @@ function dsq_admin_head() {
682
  ?>
683
  <link rel='stylesheet' href='<?php echo DSQ_PLUGIN_URL; ?>/styles/manage.css' type='text/css' />
684
  <style type="text/css">
685
- .dsq-exporting, .dsq-exported, .dsq-export-fail {
686
  background: url(<?php echo admin_url('images/loading.gif'); ?>) left center no-repeat;
687
  line-height: 16px;
688
  padding-left: 20px;
689
  }
690
- .dsq-exported {
 
 
 
 
 
691
  background: url(<?php echo admin_url('images/yes.png'); ?>) left center no-repeat;
692
  }
693
- .dsq-export-fail {
694
  background: url(<?php echo admin_url('images/no.png'); ?>) left center no-repeat;
695
  }
696
  </style>
@@ -706,6 +774,7 @@ jQuery(function($) {
706
  $('#dsq-tab-advanced').click();
707
  }
708
  dsq_fire_export();
 
709
  });
710
  dsq_fire_export = function() {
711
  var $ = jQuery;
@@ -749,6 +818,47 @@ dsq_export_comments = function() {
749
  'json'
750
  );
751
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
752
  </script>
753
  <?php
754
  // HACK: Our own styles for older versions of WordPress.
4
  Plugin URI: http://disqus.com/
5
  Description: The Disqus comment system replaces your WordPress comment system with your comments hosted and powered by Disqus. Head over to the Comments admin page to set up your DISQUS Comment System.
6
  Author: Disqus <team@disqus.com>
7
+ Version: 2.46
8
  Author URI: http://disqus.com/
9
  */
10
 
63
  * @global string $dsq_version
64
  * @since 1.0
65
  */
66
+ $dsq_version = '2.46';
67
  $mt_dsq_version = '2.01';
68
  /**
69
  * Response from Disqus get_thread API call for comments template.
193
  if ( !$last_comment_date ) {
194
  $last_comment_date = 0;
195
  }
196
+
197
  foreach ( $comments as $comment ) {
198
  $ts = strtotime($comment->created_at);
199
  if ( $comment->imported ) {
284
  }
285
  // schedule the event for 30 seconds from now in case they
286
  // happen to make a quick post
287
+ // $result = dsq_sync_post($post_id);
288
+ // die('// '. $result);
289
  wp_schedule_single_event(time(), 'dsq_sync_post', array($post_id));
290
+ die('// sync scheduled');
 
291
  break;
292
  case 'export_comments':
293
  if (current_user_can('manage_options') && DISQUS_CAN_EXPORT) {
323
  else {
324
  $status = 'partial';
325
  if (count($posts) == 1) {
326
+ $msg = dsq_i('Processed comments on post #%s&hellip;', $first_post_id);
327
  }
328
  else {
329
+ $msg = dsq_i('Processed comments on posts #%s-%s&hellip;', $first_post_id, $last_post_id);
330
  }
331
  }
332
  $result = 'fail';
333
+ $response = null;
334
  if (count($posts)) {
335
  include_once(dirname(__FILE__) . '/export.php');
336
  $wxr = dsq_export_wp($posts);
337
  $response = $dsq_api->import_wordpress_comments($wxr, $timestamp, $eof);
338
  if (!($response['group_id'] > 0)) {
339
  $result = 'fail';
340
+ $msg = '<p class="status dsq-export-fail">'. dsq_i('Sorry, something unexpected happened with the export. Please <a href="#" id="dsq_export_retry">try again</a></p><p>If your API key has changed, you may need to reinstall Disqus (deactivate the plugin and then reactivate it). If you are still having issues, refer to the <a href="%s" onclick="window.open(this.href); return false">WordPress help page</a>.', 'http://disqus.com/help/wordpress'). '</p>';
341
+ $response = $dsq_api->get_last_error();
342
  }
343
  else {
344
  if ($eof) {
345
+ $msg = dsq_i('Your comments have been sent to Disqus and queued for import!<br/><a href="%s" target="_blank">See the status of your import at Disqus</a>', $response['link']);
346
 
347
  }
348
  $result = 'success';
349
  }
350
  }
351
  // send AJAX response
352
+ $response = compact('result', 'timestamp', 'status', 'last_post_id', 'msg', 'eof', 'response');
353
+ header('Content-type: text/javascript');
354
+ echo cf_json_encode($response);
355
+ die();
356
+ }
357
+ break;
358
+ case 'import_comments':
359
+ if (current_user_can('manage_options')) {
360
+ $post_id = intval($_GET['post_id']);
361
+ $limit = 1;
362
+ global $wpdb, $dsq_api;
363
+ $posts = $wpdb->get_results($wpdb->prepare("
364
+ SELECT ID
365
+ FROM $wpdb->posts
366
+ WHERE post_type != 'revision'
367
+ AND post_status = 'publish'
368
+ AND comment_count > 0
369
+ AND ID > %d
370
+ ORDER BY ID ASC
371
+ LIMIT $limit
372
+ ", $post_id));
373
+ $first_post_id = $posts[0]->ID;
374
+ $last_post_id = $posts[(count($posts) - 1)]->ID;
375
+ $max_post_id = $wpdb->get_var($wpdb->prepare("
376
+ SELECT MAX(ID)
377
+ FROM $wpdb->posts
378
+ WHERE post_type != 'revision'
379
+ AND post_status = 'publish'
380
+ AND comment_count > 0
381
+ AND ID > %d
382
+ ", $post_id));
383
+ $eof = (int)($last_post_id == $max_post_id);
384
+ if ($eof) {
385
+ $status = 'complete';
386
+ $msg = dsq_i('Your comments have been downloaded from Disqus and saved in your local database.');
387
+ }
388
+ else {
389
+ $status = 'partial';
390
+ if (count($posts) == 1) {
391
+ $msg = dsq_i('Imported comments on post #%s&hellip;', $first_post_id);
392
+ }
393
+ else {
394
+ $msg = dsq_i('Imported comments on posts #%s-%s&hellip;', $first_post_id, $last_post_id);
395
+ }
396
+ }
397
+ $result = 'fail';
398
+ $response = null;
399
+ if (count($posts)) {
400
+ foreach ($posts as $post) {
401
+ $result = dsq_sync_post($post->ID);
402
+ # Threads with no comments may not exist
403
+ if (!($result > 0) && $result != 'Invalid thread identifier specified.') {
404
+ $msg = '<p class="status dsq-export-fail">' . $result . ' Please <a href="#" id="dsq_import_retry">try again</a>.</p>';
405
+ $result = 'fail';
406
+ break;
407
+ }
408
+ $result = 'success';
409
+ }
410
+ }
411
+ // send AJAX response
412
+ $response = compact('result', 'status', 'last_post_id', 'msg');
413
  header('Content-type: text/javascript');
414
  echo cf_json_encode($response);
415
  die();
430
  dsq_update_permalink($post);
431
 
432
  // get_thread should limit based on last comment date
433
+ $last_comment_id = $wpdb->get_var($wpdb->prepare( "SELECT MAX(cm.meta_value) FROM $wpdb->commentmeta as cm INNER JOIN $wpdb->comments as c ON c.comment_ID = cm.comment_id WHERE cm.meta_key = 'dsq_post_id'"));
434
  if (!$last_comment_id) {
435
  $last_comment_id = 0;
436
  } else {
439
 
440
  // Pull comments from API
441
  $dsq_response = $dsq_api->get_thread($post, $last_comment_id);
442
+ if( $dsq_response < 0 || $dsq_response === false ) {
443
+ return $dsq_api->get_last_error();
 
444
  }
445
  // Sync comments with database.
446
  dsq_sync_comments($post, $dsq_response);
447
+ return 1;
448
  }
449
 
450
  add_action('dsq_sync_post', 'dsq_sync_post');
745
  ?>
746
  <link rel='stylesheet' href='<?php echo DSQ_PLUGIN_URL; ?>/styles/manage.css' type='text/css' />
747
  <style type="text/css">
748
+ .dsq-importing, .dsq-imported, .dsq-import-fail, .dsq-exporting, .dsq-exported, .dsq-export-fail {
749
  background: url(<?php echo admin_url('images/loading.gif'); ?>) left center no-repeat;
750
  line-height: 16px;
751
  padding-left: 20px;
752
  }
753
+ p.status {
754
+ padding-top: 0;
755
+ padding-bottom: 0;
756
+ margin: 0;
757
+ }
758
+ .dsq-imported, .dsq-exported {
759
  background: url(<?php echo admin_url('images/yes.png'); ?>) left center no-repeat;
760
  }
761
+ .dsq-import-fail, .dsq-export-fail {
762
  background: url(<?php echo admin_url('images/no.png'); ?>) left center no-repeat;
763
  }
764
  </style>
774
  $('#dsq-tab-advanced').click();
775
  }
776
  dsq_fire_export();
777
+ dsq_fire_import();
778
  });
779
  dsq_fire_export = function() {
780
  var $ = jQuery;
818
  'json'
819
  );
820
  }
821
+ dsq_fire_import = function() {
822
+ var $ = jQuery;
823
+ $('#dsq_import a.button, #dsq_import_retry').unbind().click(function() {
824
+ $('#dsq_import').html('<p class="status"></p>');
825
+ $('#dsq_import .status').removeClass('dsq-import-fail').addClass('dsq-importing').html('Processing...');
826
+ dsq_import_comments();
827
+ return false;
828
+ });
829
+ }
830
+ dsq_import_comments = function() {
831
+ var $ = jQuery;
832
+ var status = $('#dsq_import .status');
833
+ var info = status.attr('rel');
834
+ $.get(
835
+ '<?php echo admin_url('index.php'); ?>',
836
+ {
837
+ cf_action: 'import_comments',
838
+ post_id: info,
839
+ },
840
+ function(response) {
841
+ switch (response.result) {
842
+ case 'success':
843
+ status.html(response.msg).attr('rel', response.last_post_id);
844
+ switch (response.status) {
845
+ case 'partial':
846
+ dsq_import_comments();
847
+ break;
848
+ case 'complete':
849
+ status.removeClass('dsq-importing').addClass('dsq-imported');
850
+ break;
851
+ }
852
+ break;
853
+ case 'fail':
854
+ status.parent().html(response.msg);
855
+ dsq_fire_import();
856
+ break;
857
+ }
858
+ },
859
+ 'json'
860
+ );
861
+ }
862
  </script>
863
  <?php
864
  // HACK: Our own styles for older versions of WordPress.
export.php CHANGED
@@ -207,6 +207,7 @@ echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?' . ">\n";
207
  <rss version="2.0"
208
  xmlns:excerpt="http://wordpress.org/export/<?php echo WXR_VERSION; ?>/excerpt/"
209
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
 
210
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
211
  xmlns:dc="http://purl.org/dc/elements/1.1/"
212
  xmlns:wp="http://wordpress.org/export/<?php echo WXR_VERSION; ?>/"
@@ -245,6 +246,7 @@ if (count($posts)) {
245
  <description></description>
246
  <content:encoded><?php echo wxr_cdata( apply_filters('the_content_export', $post->post_content) ); ?></content:encoded>
247
  <excerpt:encoded><?php echo wxr_cdata( apply_filters('the_excerpt_export', $post->post_excerpt) ); ?></excerpt:encoded>
 
248
  <wp:post_id><?php echo $post->ID; ?></wp:post_id>
249
  <wp:post_date><?php echo $post->post_date; ?></wp:post_date>
250
  <wp:post_date_gmt><?php echo $post->post_date_gmt; ?></wp:post_date_gmt>
207
  <rss version="2.0"
208
  xmlns:excerpt="http://wordpress.org/export/<?php echo WXR_VERSION; ?>/excerpt/"
209
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
210
+ xmlns:dsq="http://www.disqus.com/"
211
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
212
  xmlns:dc="http://purl.org/dc/elements/1.1/"
213
  xmlns:wp="http://wordpress.org/export/<?php echo WXR_VERSION; ?>/"
246
  <description></description>
247
  <content:encoded><?php echo wxr_cdata( apply_filters('the_content_export', $post->post_content) ); ?></content:encoded>
248
  <excerpt:encoded><?php echo wxr_cdata( apply_filters('the_excerpt_export', $post->post_excerpt) ); ?></excerpt:encoded>
249
+ <dsq:thread_identifier><?php echo dsq_identifier_for_post($post); ?></dsq:thread_identifier>
250
  <wp:post_id><?php echo $post->ID; ?></wp:post_id>
251
  <wp:post_date><?php echo $post->post_date; ?></wp:post_date>
252
  <wp:post_date_gmt><?php echo $post->post_date_gmt; ?></wp:post_date_gmt>
lib/wpapi.php CHANGED
@@ -102,6 +102,8 @@ class DisqusWordPressAPI {
102
  )
103
  );
104
  if ($response->errors) {
 
 
105
  return -1;
106
  }
107
  $data = unserialize($response['body']);
102
  )
103
  );
104
  if ($response->errors) {
105
+ // hack
106
+ $this->api->last_error = $response->errors;
107
  return -1;
108
  }
109
  $data = unserialize($response['body']);
manage.php CHANGED
@@ -72,6 +72,7 @@ if ( isset($_POST['disqus_forum_url']) && isset($_POST['disqus_replace']) ) {
72
  update_option('disqus_user_api_key', trim(stripslashes($_POST['disqus_user_api_key'])));
73
  update_option('disqus_replace', $_POST['disqus_replace']);
74
  update_option('disqus_cc_fix', isset($_POST['disqus_cc_fix']));
 
75
  dsq_manage_dialog('Your settings have been changed.');
76
  }
77
 
@@ -91,7 +92,7 @@ if ( 2 == $step && isset($_POST['dsq_username']) && isset($_POST['dsq_password']
91
  }
92
 
93
  $dsq_sites = $dsq_api->get_forum_list($dsq_user_api_key);
94
- if ( $dsq_sites < 0 ) {
95
  $step = 1;
96
  dsq_manage_dialog($dsq_api->get_last_error(), true);
97
  }
@@ -191,6 +192,7 @@ case 0:
191
  $dsq_user_api_key = get_option('disqus_user_api_key');
192
  $dsq_partner_key = get_option('disqus_partner_key');
193
  $dsq_cc_fix = get_option('disqus_cc_fix');
 
194
  ?>
195
  <!-- Advanced options -->
196
  <div id="dsq-advanced" class="dsq-content dsq-advanced" style="display:none;">
@@ -251,11 +253,20 @@ case 0:
251
  <th scope="row" valign="top"><?php echo dsq_i('Comment Counts'); ?></th>
252
  <td>
253
  <input type="checkbox" id="disqus_comment_count" name="disqus_cc_fix" <?php if($dsq_cc_fix){echo 'checked="checked"';}?> >
254
- <label for="disqus_comment_count"<?php echo dsq_i('>Output JavaScript in footer'); ?></label>
255
  <br /><?php echo dsq_i('NOTE: Check this if you have problems with the comment count displays including: not showing on permalinks, broken featured image carousels, or longer-than-usual homepage load times (<a href="%s" onclick="window.open(this.href); return false">more info</a>).', 'http://disqus.com/help/wordpress'); ?>
256
  </td>
257
  </tr>
258
 
 
 
 
 
 
 
 
 
 
259
  </table>
260
 
261
  <p class="submit" style="text-align: left">
@@ -274,6 +285,14 @@ case 0:
274
  </td>
275
  </tr>
276
  <?php endif; ?>
 
 
 
 
 
 
 
 
277
  <tr>
278
  <th scope="row" valign="top"><?php echo dsq_i('Uninstall Disqus Comments'); ?></th>
279
  <td>
72
  update_option('disqus_user_api_key', trim(stripslashes($_POST['disqus_user_api_key'])));
73
  update_option('disqus_replace', $_POST['disqus_replace']);
74
  update_option('disqus_cc_fix', isset($_POST['disqus_cc_fix']));
75
+ update_option('disqus_manual_sync', isset($_POST['disqus_manual_sync']));
76
  dsq_manage_dialog('Your settings have been changed.');
77
  }
78
 
92
  }
93
 
94
  $dsq_sites = $dsq_api->get_forum_list($dsq_user_api_key);
95
+ if ( $dsq_sites < 0 || !$dsq_sites ) {
96
  $step = 1;
97
  dsq_manage_dialog($dsq_api->get_last_error(), true);
98
  }
192
  $dsq_user_api_key = get_option('disqus_user_api_key');
193
  $dsq_partner_key = get_option('disqus_partner_key');
194
  $dsq_cc_fix = get_option('disqus_cc_fix');
195
+ $dsq_manual_sync = get_option('disqus_manual_sync');
196
  ?>
197
  <!-- Advanced options -->
198
  <div id="dsq-advanced" class="dsq-content dsq-advanced" style="display:none;">
253
  <th scope="row" valign="top"><?php echo dsq_i('Comment Counts'); ?></th>
254
  <td>
255
  <input type="checkbox" id="disqus_comment_count" name="disqus_cc_fix" <?php if($dsq_cc_fix){echo 'checked="checked"';}?> >
256
+ <label for="disqus_comment_count"><?php echo dsq_i('Output JavaScript in footer'); ?></label>
257
  <br /><?php echo dsq_i('NOTE: Check this if you have problems with the comment count displays including: not showing on permalinks, broken featured image carousels, or longer-than-usual homepage load times (<a href="%s" onclick="window.open(this.href); return false">more info</a>).', 'http://disqus.com/help/wordpress'); ?>
258
  </td>
259
  </tr>
260
 
261
+ <tr>
262
+ <th scope="row" valign="top"><?php echo dsq_i('Comment Sync'); ?></th>
263
+ <td>
264
+ <input type="checkbox" id="disqus_manual_sync" name="disqus_manual_sync" <?php if($dsq_manual_sync){echo 'checked="checked"';}?> >
265
+ <label for="disqus_manual_sync"><?php echo dsq_i('Disable automated comment importing'); ?></label>
266
+ <br /><?php echo dsq_i('NOTE: If you have problems with WP cron taking too long and large numbers of comments you may wish to disable the automated sync cron. Keep in mind that this means comments will not automatically get synced to your local Wordpress database.'); ?>
267
+ </td>
268
+ </tr>
269
+
270
  </table>
271
 
272
  <p class="submit" style="text-align: left">
285
  </td>
286
  </tr>
287
  <?php endif; ?>
288
+ <tr>
289
+ <th scope="row" valign="top"><?php echo dsq_i('Sync Disqus with WordPress'); ?></th>
290
+ <td>
291
+ <div id="dsq_import">
292
+ <p class="status"><a href="#" class="button"><?php echo dsq_i('Sync Comments'); ?></a> <?php echo dsq_i('This will download your Disqus comments and store them locally in WordPress'); ?></p>
293
+ </div>
294
+ </td>
295
+ </tr>
296
  <tr>
297
  <th scope="row" valign="top"><?php echo dsq_i('Uninstall Disqus Comments'); ?></th>
298
  <td>
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: disqus, alexkingorg, crowdfavorite
3
  Tags: comments, threaded, email, notification, spam, avatars, community, profile, widget
4
  Requires at least: 2.8
5
  Tested up to: 3.0
6
- Stable tag: 2.45
7
 
8
  The Disqus comment system replaces your WordPress comment system with your comments hosted and powered by Disqus.
9
 
@@ -62,6 +62,15 @@ you should remove it, and the new plugin should be stored in 'disqus'.
62
 
63
  == Changes ==
64
 
 
 
 
 
 
 
 
 
 
65
  2.45
66
 
67
  * Comments should now store thread information as well as certain other meta data.
3
  Tags: comments, threaded, email, notification, spam, avatars, community, profile, widget
4
  Requires at least: 2.8
5
  Tested up to: 3.0
6
+ Stable tag: 2.46
7
 
8
  The Disqus comment system replaces your WordPress comment system with your comments hosted and powered by Disqus.
9
 
62
 
63
  == Changes ==
64
 
65
+ 2.46
66
+
67
+ * Better debugging information for export errors.
68
+ * Added the ability to manual import Disqus comments into Wordpress.
69
+ * Added thread_identifier support to exports.
70
+ * Cleaned up API error messages.
71
+ * Fixed a bug which was causing the import process to not grab only the latest set of comments.
72
+ * Added an option to disable automated synchronization with Disqus.
73
+
74
  2.45
75
 
76
  * Comments should now store thread information as well as certain other meta data.