diff --git a/wp-includes/comment.php b/wp-includes/comment.php
index 9751c362c5..ee28fe7e74 100644
--- a/wp-includes/comment.php
+++ b/wp-includes/comment.php
@@ -436,85 +436,9 @@ function wp_update_comment_count($post_id) {
return true;
}
-function pingback($content, $post_ID) {
- global $wp_version, $wpdb;
- include_once (ABSPATH . WPINC . '/class-IXR.php');
-
- // original code by Mort (http://mort.mine.nu:8080)
- $log = debug_fopen(ABSPATH . '/pingback.log', 'a');
- $post_links = array();
- debug_fwrite($log, 'BEGIN '.date('YmdHis', time())."\n");
-
- $pung = get_pung($post_ID);
-
- // Variables
- $ltrs = '\w';
- $gunk = '/#~:.?+=&%@!\-';
- $punc = '.:?\-';
- $any = $ltrs . $gunk . $punc;
-
- // Step 1
- // Parsing the post, external links (if any) are stored in the $post_links array
- // This regexp comes straight from phpfreaks.com
- // http://www.phpfreaks.com/quickcode/Extract_All_URLs_on_a_Page/15.php
- preg_match_all("{\b http : [$any] +? (?= [$punc] * [^$any] | $)}x", $content, $post_links_temp);
-
- // Debug
- debug_fwrite($log, 'Post contents:');
- debug_fwrite($log, $content."\n");
-
- // Step 2.
- // Walking thru the links array
- // first we get rid of links pointing to sites, not to specific files
- // Example:
- // http://dummy-weblog.org
- // http://dummy-weblog.org/
- // http://dummy-weblog.org/post.php
- // We don't wanna ping first and second types, even if they have a valid
-
- foreach($post_links_temp[0] as $link_test) :
- if ( !in_array($link_test, $pung) && (url_to_postid($link_test) != $post_ID) // If we haven't pung it already and it isn't a link to itself
- && !is_local_attachment($link_test) ) : // Also, let's never ping local attachments.
- $test = parse_url($link_test);
- if (isset($test['query']))
- $post_links[] = $link_test;
- elseif(($test['path'] != '/') && ($test['path'] != ''))
- $post_links[] = $link_test;
- endif;
- endforeach;
-
- do_action('pre_ping', array(&$post_links, &$pung));
-
- foreach ($post_links as $pagelinkedto){
- debug_fwrite($log, "Processing -- $pagelinkedto\n");
- $pingback_server_url = discover_pingback_server_uri($pagelinkedto, 2048);
-
- if ($pingback_server_url) {
- @ set_time_limit( 60 );
- // Now, the RPC call
- debug_fwrite($log, "Page Linked To: $pagelinkedto \n");
- debug_fwrite($log, 'Page Linked From: ');
- $pagelinkedfrom = get_permalink($post_ID);
- debug_fwrite($log, $pagelinkedfrom."\n");
-
- // using a timeout of 3 seconds should be enough to cover slow servers
- $client = new IXR_Client($pingback_server_url);
- $client->timeout = 3;
- $client->useragent .= ' -- WordPress/' . $wp_version;
-
- // when set to true, this outputs debug messages by itself
- $client->debug = false;
-
- if ( $client->query('pingback.ping', $pagelinkedfrom, $pagelinkedto ) )
- add_ping( $post_ID, $pagelinkedto );
- else
- debug_fwrite($log, "Error.\n Fault code: ".$client->getErrorCode()." : ".$client->getErrorMessage()."\n");
- }
- }
-
- debug_fwrite($log, "\nEND: ".time()."\n****************************\n");
- debug_fclose($log);
-}
+//
+// Ping and trackback functions.
+//
function discover_pingback_server_uri($url, $timeout_bytes = 2048) {
global $wp_version;
@@ -606,17 +530,226 @@ function discover_pingback_server_uri($url, $timeout_bytes = 2048) {
return false;
}
-function is_local_attachment($url) {
- if ( !strstr($url, get_bloginfo('home') ) )
- return false;
- if ( strstr($url, get_bloginfo('home') . '/?attachment_id=') )
- return true;
- if ( $id = url_to_postid($url) ) {
- $post = & get_post($id);
- if ( 'attachment' == $post->post_type )
- return true;
+function do_all_pings() {
+ global $wpdb;
+
+ // Do pingbacks
+ while ($ping = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) {
+ $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$ping->ID} AND meta_key = '_pingme';");
+ pingback($ping->post_content, $ping->ID);
}
- return false;
+
+ // Do Enclosures
+ while ($enclosure = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) {
+ $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$enclosure->ID} AND meta_key = '_encloseme';");
+ do_enclose($enclosure->post_content, $enclosure->ID);
+ }
+
+ // Do Trackbacks
+ $trackbacks = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE CHAR_LENGTH(TRIM(to_ping)) > 7 AND post_status = 'publish'");
+ if ( is_array($trackbacks) ) {
+ foreach ( $trackbacks as $trackback ) {
+ do_trackbacks($trackback->ID);
+ }
+ }
+
+ //Do Update Services/Generic Pings
+ generic_ping();
+}
+
+function do_trackbacks($post_id) {
+ global $wpdb;
+
+ $post = $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID = $post_id");
+ $to_ping = get_to_ping($post_id);
+ $pinged = get_pung($post_id);
+ if ( empty($to_ping) ) {
+ $wpdb->query("UPDATE $wpdb->posts SET to_ping = '' WHERE ID = '$post_id'");
+ return;
+ }
+
+ if (empty($post->post_excerpt))
+ $excerpt = apply_filters('the_content', $post->post_content);
+ else
+ $excerpt = apply_filters('the_excerpt', $post->post_excerpt);
+ $excerpt = str_replace(']]>', ']]>', $excerpt);
+ $excerpt = strip_tags($excerpt);
+ if ( function_exists('mb_strcut') ) // For international trackbacks
+ $excerpt = mb_strcut($excerpt, 0, 252, get_settings('blog_charset')) . '...';
+ else
+ $excerpt = substr($excerpt, 0, 252) . '...';
+
+ $post_title = apply_filters('the_title', $post->post_title);
+ $post_title = strip_tags($post_title);
+
+ if ($to_ping) : foreach ($to_ping as $tb_ping) :
+ $tb_ping = trim($tb_ping);
+ if ( !in_array($tb_ping, $pinged) ) {
+ trackback($tb_ping, $post_title, $excerpt, $post_id);
+ $pinged[] = $tb_ping;
+ } else {
+ $wpdb->query("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '$tb_ping', '')) WHERE ID = '$post_id'");
+ }
+ endforeach; endif;
+}
+
+function generic_ping($post_id = 0) {
+ $services = get_settings('ping_sites');
+ $services = preg_replace("|(\s)+|", '$1', $services); // Kill dupe lines
+ $services = trim($services);
+ if ( '' != $services ) {
+ $services = explode("\n", $services);
+ foreach ($services as $service) {
+ weblog_ping($service);
+ }
+ }
+
+ return $post_id;
+}
+
+function pingback($content, $post_ID) {
+ global $wp_version, $wpdb;
+ include_once (ABSPATH . WPINC . '/class-IXR.php');
+
+ // original code by Mort (http://mort.mine.nu:8080)
+ $log = debug_fopen(ABSPATH . '/pingback.log', 'a');
+ $post_links = array();
+ debug_fwrite($log, 'BEGIN '.date('YmdHis', time())."\n");
+
+ $pung = get_pung($post_ID);
+
+ // Variables
+ $ltrs = '\w';
+ $gunk = '/#~:.?+=&%@!\-';
+ $punc = '.:?\-';
+ $any = $ltrs . $gunk . $punc;
+
+ // Step 1
+ // Parsing the post, external links (if any) are stored in the $post_links array
+ // This regexp comes straight from phpfreaks.com
+ // http://www.phpfreaks.com/quickcode/Extract_All_URLs_on_a_Page/15.php
+ preg_match_all("{\b http : [$any] +? (?= [$punc] * [^$any] | $)}x", $content, $post_links_temp);
+
+ // Debug
+ debug_fwrite($log, 'Post contents:');
+ debug_fwrite($log, $content."\n");
+
+ // Step 2.
+ // Walking thru the links array
+ // first we get rid of links pointing to sites, not to specific files
+ // Example:
+ // http://dummy-weblog.org
+ // http://dummy-weblog.org/
+ // http://dummy-weblog.org/post.php
+ // We don't wanna ping first and second types, even if they have a valid
+
+ foreach($post_links_temp[0] as $link_test) :
+ if ( !in_array($link_test, $pung) && (url_to_postid($link_test) != $post_ID) // If we haven't pung it already and it isn't a link to itself
+ && !is_local_attachment($link_test) ) : // Also, let's never ping local attachments.
+ $test = parse_url($link_test);
+ if (isset($test['query']))
+ $post_links[] = $link_test;
+ elseif(($test['path'] != '/') && ($test['path'] != ''))
+ $post_links[] = $link_test;
+ endif;
+ endforeach;
+
+ do_action('pre_ping', array(&$post_links, &$pung));
+
+ foreach ($post_links as $pagelinkedto){
+ debug_fwrite($log, "Processing -- $pagelinkedto\n");
+ $pingback_server_url = discover_pingback_server_uri($pagelinkedto, 2048);
+
+ if ($pingback_server_url) {
+ @ set_time_limit( 60 );
+ // Now, the RPC call
+ debug_fwrite($log, "Page Linked To: $pagelinkedto \n");
+ debug_fwrite($log, 'Page Linked From: ');
+ $pagelinkedfrom = get_permalink($post_ID);
+ debug_fwrite($log, $pagelinkedfrom."\n");
+
+ // using a timeout of 3 seconds should be enough to cover slow servers
+ $client = new IXR_Client($pingback_server_url);
+ $client->timeout = 3;
+ $client->useragent .= ' -- WordPress/' . $wp_version;
+
+ // when set to true, this outputs debug messages by itself
+ $client->debug = false;
+
+ if ( $client->query('pingback.ping', $pagelinkedfrom, $pagelinkedto ) )
+ add_ping( $post_ID, $pagelinkedto );
+ else
+ debug_fwrite($log, "Error.\n Fault code: ".$client->getErrorCode()." : ".$client->getErrorMessage()."\n");
+ }
+ }
+
+ debug_fwrite($log, "\nEND: ".time()."\n****************************\n");
+ debug_fclose($log);
+}
+
+function privacy_ping_filter( $sites ) {
+ if ( '0' != get_option('blog_public') )
+ return $sites;
+ else
+ return '';
+}
+
+// Send a Trackback
+function trackback($trackback_url, $title, $excerpt, $ID) {
+ global $wpdb, $wp_version;
+
+ if ( empty($trackback_url) )
+ return;
+
+ $title = urlencode($title);
+ $excerpt = urlencode($excerpt);
+ $blog_name = urlencode(get_settings('blogname'));
+ $tb_url = $trackback_url;
+ $url = urlencode(get_permalink($ID));
+ $query_string = "title=$title&url=$url&blog_name=$blog_name&excerpt=$excerpt";
+ $trackback_url = parse_url($trackback_url);
+ $http_request = 'POST ' . $trackback_url['path'] . ($trackback_url['query'] ? '?'.$trackback_url['query'] : '') . " HTTP/1.0\r\n";
+ $http_request .= 'Host: '.$trackback_url['host']."\r\n";
+ $http_request .= 'Content-Type: application/x-www-form-urlencoded; charset='.get_settings('blog_charset')."\r\n";
+ $http_request .= 'Content-Length: '.strlen($query_string)."\r\n";
+ $http_request .= "User-Agent: WordPress/" . $wp_version;
+ $http_request .= "\r\n\r\n";
+ $http_request .= $query_string;
+ if ( '' == $trackback_url['port'] )
+ $trackback_url['port'] = 80;
+ $fs = @fsockopen($trackback_url['host'], $trackback_url['port'], $errno, $errstr, 4);
+ @fputs($fs, $http_request);
+/*
+ $debug_file = 'trackback.log';
+ $fp = fopen($debug_file, 'a');
+ fwrite($fp, "\n*****\nRequest:\n\n$http_request\n\nResponse:\n\n");
+ while(!@feof($fs)) {
+ fwrite($fp, @fgets($fs, 4096));
+ }
+ fwrite($fp, "\n\n");
+ fclose($fp);
+*/
+ @fclose($fs);
+
+ $tb_url = addslashes( $tb_url );
+ $wpdb->query("UPDATE $wpdb->posts SET pinged = CONCAT(pinged, '\n', '$tb_url') WHERE ID = '$ID'");
+ return $wpdb->query("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '$tb_url', '')) WHERE ID = '$ID'");
+}
+
+function weblog_ping($server = '', $path = '') {
+ global $wp_version;
+ include_once (ABSPATH . WPINC . '/class-IXR.php');
+
+ // using a timeout of 3 seconds should be enough to cover slow servers
+ $client = new IXR_Client($server, ((!strlen(trim($path)) || ('/' == $path)) ? false : $path));
+ $client->timeout = 3;
+ $client->useragent .= ' -- WordPress/'.$wp_version;
+
+ // when set to true, this outputs debug messages by itself
+ $client->debug = false;
+ $home = trailingslashit( get_option('home') );
+ if ( !$client->query('weblogUpdates.extendedPing', get_settings('blogname'), $home, get_bloginfo('rss2_url') ) ) // then try a normal ping
+ $client->query('weblogUpdates.ping', get_settings('blogname'), $home);
}
?>
diff --git a/wp-includes/functions.php b/wp-includes/functions.php
index 2b2849c573..c7e257a5c8 100644
--- a/wp-includes/functions.php
+++ b/wp-includes/functions.php
@@ -319,78 +319,6 @@ function timer_stop($display = 0, $precision = 3) { //if called like timer_stop(
return $timetotal;
}
-function weblog_ping($server = '', $path = '') {
- global $wp_version;
- include_once (ABSPATH . WPINC . '/class-IXR.php');
-
- // using a timeout of 3 seconds should be enough to cover slow servers
- $client = new IXR_Client($server, ((!strlen(trim($path)) || ('/' == $path)) ? false : $path));
- $client->timeout = 3;
- $client->useragent .= ' -- WordPress/'.$wp_version;
-
- // when set to true, this outputs debug messages by itself
- $client->debug = false;
- $home = trailingslashit( get_option('home') );
- if ( !$client->query('weblogUpdates.extendedPing', get_settings('blogname'), $home, get_bloginfo('rss2_url') ) ) // then try a normal ping
- $client->query('weblogUpdates.ping', get_settings('blogname'), $home);
-}
-
-function generic_ping($post_id = 0) {
- $services = get_settings('ping_sites');
- $services = preg_replace("|(\s)+|", '$1', $services); // Kill dupe lines
- $services = trim($services);
- if ( '' != $services ) {
- $services = explode("\n", $services);
- foreach ($services as $service) {
- weblog_ping($service);
- }
- }
-
- return $post_id;
-}
-
-// Send a Trackback
-function trackback($trackback_url, $title, $excerpt, $ID) {
- global $wpdb, $wp_version;
-
- if ( empty($trackback_url) )
- return;
-
- $title = urlencode($title);
- $excerpt = urlencode($excerpt);
- $blog_name = urlencode(get_settings('blogname'));
- $tb_url = $trackback_url;
- $url = urlencode(get_permalink($ID));
- $query_string = "title=$title&url=$url&blog_name=$blog_name&excerpt=$excerpt";
- $trackback_url = parse_url($trackback_url);
- $http_request = 'POST ' . $trackback_url['path'] . ($trackback_url['query'] ? '?'.$trackback_url['query'] : '') . " HTTP/1.0\r\n";
- $http_request .= 'Host: '.$trackback_url['host']."\r\n";
- $http_request .= 'Content-Type: application/x-www-form-urlencoded; charset='.get_settings('blog_charset')."\r\n";
- $http_request .= 'Content-Length: '.strlen($query_string)."\r\n";
- $http_request .= "User-Agent: WordPress/" . $wp_version;
- $http_request .= "\r\n\r\n";
- $http_request .= $query_string;
- if ( '' == $trackback_url['port'] )
- $trackback_url['port'] = 80;
- $fs = @fsockopen($trackback_url['host'], $trackback_url['port'], $errno, $errstr, 4);
- @fputs($fs, $http_request);
-/*
- $debug_file = 'trackback.log';
- $fp = fopen($debug_file, 'a');
- fwrite($fp, "\n*****\nRequest:\n\n$http_request\n\nResponse:\n\n");
- while(!@feof($fs)) {
- fwrite($fp, @fgets($fs, 4096));
- }
- fwrite($fp, "\n\n");
- fclose($fp);
-*/
- @fclose($fs);
-
- $tb_url = addslashes( $tb_url );
- $wpdb->query("UPDATE $wpdb->posts SET pinged = CONCAT(pinged, '\n', '$tb_url') WHERE ID = '$ID'");
- return $wpdb->query("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '$tb_url', '')) WHERE ID = '$ID'");
-}
-
function make_url_footnote($content) {
preg_match_all('/(.+?)<\/a>/', $content, $matches);
$j = 0;
@@ -820,13 +748,6 @@ function get_num_queries() {
return $wpdb->num_queries;
}
-function privacy_ping_filter( $sites ) {
- if ( '0' != get_option('blog_public') )
- return $sites;
- else
- return '';
-}
-
function bool_from_yn($yn) {
if ($yn == 'Y') return 1;
return 0;
@@ -1068,69 +989,6 @@ function wp_check_filetype($filename, $mimes = null) {
return compact('ext', 'type');
}
-function do_trackbacks($post_id) {
- global $wpdb;
-
- $post = $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID = $post_id");
- $to_ping = get_to_ping($post_id);
- $pinged = get_pung($post_id);
- if ( empty($to_ping) ) {
- $wpdb->query("UPDATE $wpdb->posts SET to_ping = '' WHERE ID = '$post_id'");
- return;
- }
-
- if (empty($post->post_excerpt))
- $excerpt = apply_filters('the_content', $post->post_content);
- else
- $excerpt = apply_filters('the_excerpt', $post->post_excerpt);
- $excerpt = str_replace(']]>', ']]>', $excerpt);
- $excerpt = strip_tags($excerpt);
- if ( function_exists('mb_strcut') ) // For international trackbacks
- $excerpt = mb_strcut($excerpt, 0, 252, get_settings('blog_charset')) . '...';
- else
- $excerpt = substr($excerpt, 0, 252) . '...';
-
- $post_title = apply_filters('the_title', $post->post_title);
- $post_title = strip_tags($post_title);
-
- if ($to_ping) : foreach ($to_ping as $tb_ping) :
- $tb_ping = trim($tb_ping);
- if ( !in_array($tb_ping, $pinged) ) {
- trackback($tb_ping, $post_title, $excerpt, $post_id);
- $pinged[] = $tb_ping;
- } else {
- $wpdb->query("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '$tb_ping', '')) WHERE ID = '$post_id'");
- }
- endforeach; endif;
-}
-
-function do_all_pings() {
- global $wpdb;
-
- // Do pingbacks
- while ($ping = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_pingme' LIMIT 1")) {
- $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$ping->ID} AND meta_key = '_pingme';");
- pingback($ping->post_content, $ping->ID);
- }
-
- // Do Enclosures
- while ($enclosure = $wpdb->get_row("SELECT * FROM {$wpdb->posts}, {$wpdb->postmeta} WHERE {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id AND {$wpdb->postmeta}.meta_key = '_encloseme' LIMIT 1")) {
- $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$enclosure->ID} AND meta_key = '_encloseme';");
- do_enclose($enclosure->post_content, $enclosure->ID);
- }
-
- // Do Trackbacks
- $trackbacks = $wpdb->get_results("SELECT ID FROM $wpdb->posts WHERE CHAR_LENGTH(TRIM(to_ping)) > 7 AND post_status = 'publish'");
- if ( is_array($trackbacks) ) {
- foreach ( $trackbacks as $trackback ) {
- do_trackbacks($trackback->ID);
- }
- }
-
- //Do Update Services/Generic Pings
- generic_ping();
-}
-
function wp_proxy_check($ipnum) {
if ( get_option('open_proxy_check') && isset($ipnum) ) {
$rev_ip = implode( '.', array_reverse( explode( '.', $ipnum ) ) );
diff --git a/wp-includes/post-template.php b/wp-includes/post-template.php
index 1c18980e18..fcd3f8995b 100644
--- a/wp-includes/post-template.php
+++ b/wp-includes/post-template.php
@@ -34,6 +34,8 @@ function get_the_title($id = 0) {
$title = $post->post_title;
if ( !empty($post->post_password) )
$title = sprintf(__('Protected: %s'), $title);
+ else if ( 'private' == $post->post_status )
+ $title = sprintf(__('Private: %s'), $title);
return $title;
}
diff --git a/wp-includes/post.php b/wp-includes/post.php
index ce1a22732d..b29d0d2b69 100644
--- a/wp-includes/post.php
+++ b/wp-includes/post.php
@@ -1118,6 +1118,19 @@ function generate_page_uri_index() {
// Attachment functions
//
+function is_local_attachment($url) {
+ if ( !strstr($url, get_bloginfo('home') ) )
+ return false;
+ if ( strstr($url, get_bloginfo('home') . '/?attachment_id=') )
+ return true;
+ if ( $id = url_to_postid($url) ) {
+ $post = & get_post($id);
+ if ( 'attachment' == $post->post_type )
+ return true;
+ }
+ return false;
+}
+
function wp_insert_attachment($object, $file = false, $post_parent = 0) {
global $wpdb, $user_ID;
diff --git a/wp-includes/query.php b/wp-includes/query.php
index b7eba2ce76..8c4c6f2994 100644
--- a/wp-includes/query.php
+++ b/wp-includes/query.php
@@ -850,20 +850,19 @@ class WP_Query {
} else {
$where .= " AND (post_type = '$post_type' AND (post_status = 'publish'";
- if ( is_admin() ) {
+ if ( is_admin() )
$where .= " OR post_status = 'future' OR post_status = 'draft'";
- if ( is_user_logged_in() ) {
- if ( 'post' == $post_type )
- $cap = 'edit_private_posts';
- else
- $cap = 'edit_private_pages';
+ if ( is_user_logged_in() ) {
+ if ( 'post' == $post_type )
+ $cap = 'edit_private_posts';
+ else
+ $cap = 'edit_private_pages';
- if ( current_user_can($cap) )
- $where .= "OR post_status = 'private'";
- else
- $where .= " OR post_author = $user_ID AND post_status = 'private'";
- }
+ if ( current_user_can($cap) )
+ $where .= " OR post_status = 'private'";
+ else
+ $where .= " OR post_author = $user_ID AND post_status = 'private'";
}
$where .= '))';