function dsq_export_wp($post, $comments = null) { global $wpdb; if (!$comments) { $comments = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->comments} WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%'", $post->ID)); } // start catching output ob_start(); echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?' . ">\n"; the_generator('export'); ?> <rss version="2.0" xmlns:excerpt="http://wordpress.org/export/<?php echo WXR_VERSION; ?> /excerpt/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dsq="https://disqus.com/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wp="http://wordpress.org/export/<?php echo WXR_VERSION; ?> /" > <channel> <title><?php bloginfo_rss('name'); ?> </title> <link><?php bloginfo_rss('url'); ?> </link> <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?> </pubDate> <generator>WordPress <?php bloginfo_rss('version'); ?> ; Disqus <?php echo DISQUS_VERSION; ?> </generator> <?php global $wp_query, $post; $wp_query->in_the_loop = true; // Fake being in the loop. setup_postdata($post); ?> <item> <title><?php echo apply_filters('the_title_rss', $post->post_title); ?> </title> <link><?php the_permalink_rss(); ?> </link> <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?> </pubDate> <dc:creator><?php echo dsq_export_wxr_cdata(get_the_author()); ?> </dc:creator> <guid isPermaLink="false"><?php the_guid(); ?> </guid> <content:encoded><?php echo dsq_export_wxr_cdata(apply_filters('the_content_export', $post->post_content)); ?> </content:encoded> <dsq:thread_identifier><?php echo dsq_identifier_for_post($post); ?> </dsq:thread_identifier> <wp:post_id><?php echo $post->ID; ?> </wp:post_id> <wp:post_date_gmt><?php echo $post->post_date_gmt; ?> </wp:post_date_gmt> <wp:comment_status><?php echo $post->comment_status; ?> </wp:comment_status> <?php if ($comments) { foreach ($comments as $c) { ?> <wp:comment> <wp:comment_id><?php echo $c->comment_ID; ?> </wp:comment_id> <wp:comment_author><?php echo dsq_export_wxr_cdata($c->comment_author); ?> </wp:comment_author> <wp:comment_author_email><?php echo $c->comment_author_email; ?> </wp:comment_author_email> <wp:comment_author_url><?php echo $c->comment_author_url; ?> </wp:comment_author_url> <wp:comment_author_IP><?php echo $c->comment_author_IP; ?> </wp:comment_author_IP> <wp:comment_date><?php echo $c->comment_date; ?> </wp:comment_date> <wp:comment_date_gmt><?php echo $c->comment_date_gmt; ?> </wp:comment_date_gmt> <wp:comment_content><?php echo dsq_export_wxr_cdata($c->comment_content); ?> </wp:comment_content> <wp:comment_approved><?php echo $c->comment_approved; ?> </wp:comment_approved> <wp:comment_type><?php echo $c->comment_type; ?> </wp:comment_type> <wp:comment_parent><?php echo $c->comment_parent; ?> </wp:comment_parent> </wp:comment> <?php } } // comments ?> </item> </channel> </rss> <?php // end of WXR output $output = ob_get_clean(); return $output; }
function dsq_comments_text($comment_text) { global $post; if (dsq_can_replace()) { return '<span class="dsq-postid" data-dsqidentifier="' . esc_attr(dsq_identifier_for_post($post)) . '">' . $comment_text . '</span>'; } else { return $comment_text; } }
?> </ul> </div> <?php } ?> </div> <script type="text/javascript"> /* <![CDATA[ */ var disqus_url = '<?php echo get_permalink(); ?> '; var disqus_identifier = '<?php echo dsq_identifier_for_post($post); ?> '; var disqus_container_id = 'disqus_thread'; var disqus_domain = '<?php echo DISQUS_DOMAIN; ?> '; var disqus_shortname = '<?php echo strtolower(get_option('disqus_forum_url')); ?> '; var disqus_title = <?php echo cf_json_encode(dsq_title_for_post($post)); ?> ;
function dsq_export_wp($posts) { global $wpdb; $categories = (array) get_categories('get=all'); $tags = (array) get_tags('get=all'); /** * {@internal Missing Short Description}} * * @since unknown * * @param unknown_type $categories */ function wxr_missing_parents($categories) { if (!is_array($categories) || empty($categories)) { return array(); } foreach ($categories as $category) { $parents[$category->term_id] = $category->parent; } $parents = array_unique(array_diff($parents, array_keys($parents))); if ($zero = array_search('0', $parents)) { unset($parents[$zero]); } return $parents; } while ($parents = wxr_missing_parents($categories)) { $found_parents = get_categories("include=" . join(', ', $parents)); if (is_array($found_parents) && count($found_parents)) { $categories = array_merge($categories, $found_parents); } else { break; } } // Put them in order to be inserted with no child going before its parent $pass = 0; $passes = 1000 + count($categories); while (($cat = array_shift($categories)) && ++$pass < $passes) { if ($cat->parent == 0 || isset($cats[$cat->parent])) { $cats[$cat->term_id] = $cat; } else { $categories[] = $cat; } } unset($categories); /** * Place string in CDATA tag. * * @since unknown * * @param string $str String to place in XML CDATA tag. */ function wxr_cdata($str) { if (seems_utf8($str) == false) { $str = utf8_encode($str); } // $str = ent2ncr(esc_html($str)); $str = "<![CDATA[{$str}" . (substr($str, -1) == ']' ? ' ' : '') . "]]>"; return $str; } /** * {@internal Missing Short Description}} * * @since unknown * * @return string Site URL. */ function wxr_site_url() { global $current_site; // mu: the base url if (isset($current_site->domain)) { return 'http://' . $current_site->domain . $current_site->path; } else { return get_bloginfo_rss('url'); } } /** * {@internal Missing Short Description}} * * @since unknown * * @param object $c Category Object */ function wxr_cat_name($c) { if (empty($c->name)) { return; } echo '<wp:cat_name>' . wxr_cdata($c->name) . '</wp:cat_name>'; } /** * {@internal Missing Short Description}} * * @since unknown * * @param object $c Category Object */ function wxr_category_description($c) { if (empty($c->description)) { return; } echo '<wp:category_description>' . wxr_cdata($c->description) . '</wp:category_description>'; } /** * {@internal Missing Short Description}} * * @since unknown * * @param object $t Tag Object */ function wxr_tag_name($t) { if (empty($t->name)) { return; } echo '<wp:tag_name>' . wxr_cdata($t->name) . '</wp:tag_name>'; } /** * {@internal Missing Short Description}} * * @since unknown * * @param object $t Tag Object */ function wxr_tag_description($t) { if (empty($t->description)) { return; } echo '<wp:tag_description>' . wxr_cdata($t->description) . '</wp:tag_description>'; } /** * {@internal Missing Short Description}} * * @since unknown */ function wxr_post_taxonomy() { $categories = get_the_category(); $tags = get_the_tags(); $the_list = ''; $filter = 'rss'; if (!empty($categories)) { foreach ((array) $categories as $category) { $cat_name = sanitize_term_field('name', $category->name, $category->term_id, 'category', $filter); // for backwards compatibility $the_list .= "\n\t\t<category><![CDATA[{$cat_name}]]></category>\n"; // forwards compatibility: use a unique identifier for each cat to avoid clashes // http://trac.wordpress.org/ticket/5447 $the_list .= "\n\t\t<category domain=\"category\" nicename=\"{$category->slug}\"><![CDATA[{$cat_name}]]></category>\n"; } } if (!empty($tags)) { foreach ((array) $tags as $tag) { $tag_name = sanitize_term_field('name', $tag->name, $tag->term_id, 'post_tag', $filter); $the_list .= "\n\t\t<category domain=\"tag\"><![CDATA[{$tag_name}]]></category>\n"; // forwards compatibility as above $the_list .= "\n\t\t<category domain=\"tag\" nicename=\"{$tag->slug}\"><![CDATA[{$tag_name}]]></category>\n"; } } echo $the_list; } // start catching output ob_start(); echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?' . ">\n"; ?> <!-- This is a WordPress eXtended RSS file generated by WordPress as an export of your blog. --> <!-- It contains information about your blog's posts, comments, and categories. --> <!-- You may use this file to transfer that content from one site to another. --> <!-- This file is not intended to serve as a complete backup of your blog. --> <!-- To import this information into a WordPress blog follow these steps. --> <!-- 1. Log into that blog as an administrator. --> <!-- 2. Go to Tools: Import in the blog's admin panels (or Manage: Import in older versions of WordPress). --> <!-- 3. Choose "WordPress" from the list. --> <!-- 4. Upload this file using the form provided on that page. --> <!-- 5. You will first be asked to map the authors in this export file to users --> <!-- on the blog. For each author, you may choose to map to an --> <!-- existing user on the blog or to create a new user --> <!-- 6. WordPress will then import each of the posts, comments, and categories --> <!-- contained in this file into your blog --> <?php the_generator('export'); ?> <rss version="2.0" xmlns:excerpt="http://wordpress.org/export/<?php echo WXR_VERSION; ?> /excerpt/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dsq="http://www.disqus.com/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wp="http://wordpress.org/export/<?php echo WXR_VERSION; ?> /" > <channel> <title><?php bloginfo_rss('name'); ?> </title> <link><?php bloginfo_rss('url'); ?> </link> <description><?php bloginfo_rss("description"); ?> </description> <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?> </pubDate> <generator>http://wordpress.org/?v=<?php bloginfo_rss('version'); ?> </generator> <language><?php echo get_option('rss_language'); ?> </language> <wp:wxr_version><?php echo WXR_VERSION; ?> </wp:wxr_version> <wp:base_site_url><?php echo wxr_site_url(); ?> </wp:base_site_url> <wp:base_blog_url><?php bloginfo_rss('url'); ?> </wp:base_blog_url> <?php if ($cats) { foreach ($cats as $c) { ?> <wp:category><wp:category_nicename><?php echo $c->slug; ?> </wp:category_nicename><wp:category_parent><?php echo $c->parent ? $cats[$c->parent]->name : ''; ?> </wp:category_parent><?php wxr_cat_name($c); wxr_category_description($c); ?> </wp:category> <?php } } if ($tags) { foreach ($tags as $t) { ?> <wp:tag><wp:tag_slug><?php echo $t->slug; ?> </wp:tag_slug><?php wxr_tag_name($t); wxr_tag_description($t); ?> </wp:tag> <?php } } if (count($posts)) { global $wp_query, $post; $wp_query->in_the_loop = true; // Fake being in the loop. foreach ($posts as $post) { setup_postdata($post); ?> <item> <title><?php echo apply_filters('the_title_rss', $post->post_title); ?> </title> <link><?php the_permalink_rss(); ?> </link> <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?> </pubDate> <dc:creator><?php echo wxr_cdata(get_the_author()); ?> </dc:creator> <?php wxr_post_taxonomy(); ?> <guid isPermaLink="false"><?php the_guid(); ?> </guid> <description></description> <content:encoded><?php echo wxr_cdata(apply_filters('the_content_export', $post->post_content)); ?> </content:encoded> <excerpt:encoded><?php echo wxr_cdata(apply_filters('the_excerpt_export', $post->post_excerpt)); ?> </excerpt:encoded> <dsq:thread_identifier><?php echo dsq_identifier_for_post($post); ?> </dsq:thread_identifier> <wp:post_id><?php echo $post->ID; ?> </wp:post_id> <wp:post_date><?php echo $post->post_date; ?> </wp:post_date> <wp:post_date_gmt><?php echo $post->post_date_gmt; ?> </wp:post_date_gmt> <wp:comment_status><?php echo $post->comment_status; ?> </wp:comment_status> <wp:ping_status><?php echo $post->ping_status; ?> </wp:ping_status> <wp:post_name><?php echo $post->post_name; ?> </wp:post_name> <wp:status><?php echo $post->post_status; ?> </wp:status> <wp:post_parent><?php echo $post->post_parent; ?> </wp:post_parent> <wp:menu_order><?php echo $post->menu_order; ?> </wp:menu_order> <wp:post_type><?php echo $post->post_type; ?> </wp:post_type> <?php $comments = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->comments} WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%'", $post->ID)); if ($comments) { foreach ($comments as $c) { ?> <wp:comment> <wp:comment_id><?php echo $c->comment_ID; ?> </wp:comment_id> <wp:comment_author><?php echo wxr_cdata($c->comment_author); ?> </wp:comment_author> <wp:comment_author_email><?php echo $c->comment_author_email; ?> </wp:comment_author_email> <wp:comment_author_url><?php echo $c->comment_author_url; ?> </wp:comment_author_url> <wp:comment_author_IP><?php echo $c->comment_author_IP; ?> </wp:comment_author_IP> <wp:comment_date><?php echo $c->comment_date; ?> </wp:comment_date> <wp:comment_date_gmt><?php echo $c->comment_date_gmt; ?> </wp:comment_date_gmt> <wp:comment_content><?php echo wxr_cdata($c->comment_content); ?> </wp:comment_content> <wp:comment_approved><?php echo $c->comment_approved; ?> </wp:comment_approved> <wp:comment_type><?php echo $c->comment_type; ?> </wp:comment_type> <wp:comment_parent><?php echo $c->comment_parent; ?> </wp:comment_parent> <wp:comment_user_id><?php echo $c->user_id; ?> </wp:comment_user_id> </wp:comment> <?php } } // comments ?> </item> <?php } } // count(posts) ?> </channel> </rss> <?php // end of WXR output $output = ob_get_contents(); ob_end_clean(); return $output; }
function dsq_comments_number($comment_text) { global $post; if (dsq_can_replace()) { return '<span class="dsq-postid" rel="' . htmlspecialchars(dsq_identifier_for_post($post)) . '">View Comments</span>'; } else { return $comment_text; } }
'width' => '800', 'height' => '700', ); } if ( get_option('dsq_external_js') == '1' ) { wp_register_script( 'dsq_embed_script', plugins_url( '/media/js/disqus.js', __FILE__ ) ); wp_localize_script( 'dsq_embed_script', 'embedVars', $embed_vars ); wp_enqueue_script( 'dsq_embed_script', plugins_url( '/media/js/disqus.js', __FILE__ ) ); } else { ?> <script type="text/javascript"> var disqus_url = '<?php echo get_permalink(); ?>'; var disqus_identifier = '<?php echo dsq_identifier_for_post($post); ?>'; var disqus_container_id = 'disqus_thread'; var disqus_shortname = '<?php echo strtolower(get_option('disqus_forum_url')); ?>'; var disqus_title = <?php echo cf_json_encode( dsq_title_for_post($post) ); ?>; var disqus_config_custom = window.disqus_config; var disqus_config = function () { /* All currently supported events: onReady: fires when everything is ready, onNewComment: fires when a new comment is posted, onIdentify: fires when user is authenticated */ <?php $sso = dsq_sso(); if ($sso) {
</ul> <?php paginate_comments_links(); ?> </div> </div> <a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a> <script type="text/javascript" charset="utf-8"> var disqus_url = <?php echo wp_json_encode(get_permalink()); ?> ; var disqus_identifier = <?php echo wp_json_encode(dsq_identifier_for_post($post)); ?> ; var disqus_container_id = 'disqus_thread'; var disqus_domain = <?php echo wp_json_encode(DISQUS_DOMAIN); ?> ; var disqus_shortname = <?php echo wp_json_encode(strtolower(get_option('disqus_forum_url'))); ?> ; <?php if (false && get_option('disqus_developer')) { ?> var disqus_developer = 1;
</div> </div><!-- .navigation --> <?php } // check for comment navigation ?> </div> <?php } ?> </div> <?php global $wp_version; $embed_vars = array('disqusConfig' => array('platform' => 'wordpress@' . $wp_version, 'language' => apply_filters('disqus_language_filter', '')), 'disqusIdentifier' => dsq_identifier_for_post($post), 'disqusShortname' => strtolower(get_option('disqus_forum_url')), 'disqusTitle' => dsq_title_for_post($post), 'disqusUrl' => get_permalink(), 'options' => array('manualSync' => get_option('disqus_manual_sync')), 'postId' => $post->ID); // Add SSO vars if enabled $sso = dsq_sso(); if ($sso) { global $current_site; foreach ($sso as $k => $v) { $embed_vars['disqusConfig'][$k] = $v; } $siteurl = site_url(); $sitename = get_bloginfo('name'); $embed_vars['disqusConfig']['sso'] = array('name' => wp_specialchars_decode($sitename, ENT_QUOTES), 'button' => get_option('disqus_sso_button'), 'url' => $siteurl . '/wp-login.php', 'logout' => $siteurl . '/wp-login.php?action=logout', 'width' => '800', 'height' => '700'); } wp_register_script('dsq_embed_script', plugins_url('/media/js/disqus.js', __FILE__)); wp_localize_script('dsq_embed_script', 'embedVars', $embed_vars); wp_enqueue_script('dsq_embed_script', plugins_url('/media/js/disqus.js', __FILE__));
function get_thread($post) { $identifier = dsq_identifier_for_post($post); $response = $this->api->get_thread_posts(null, array('thread_identifier' => $identifier, 'filter' => 'approved')); return $response; }