These are the lastest actions performed by the plugin.
# telling WordPress to ping if the post is new, but not if it's just been edited
global $wpdb, $post_title;
if(get_option('SUP_ping') == 1
and get_option('ping_sites') != "")
# fetches data directly from database; the function "get_post" is cached,
# and using it here will get the post as is was before the last save
$row = mysql_fetch_array(mysql_query(
# if time when created equals time when modified it is a new post,
# otherwise the author has edited/modified it
if($row["post_date"] == $row["post_modified"])
SUP_log("Pinging services (new post: “".$post_title."”) ...");
SUP_log("Pinging services (new post) ...");
# Try commenting the line above, and uncommenting this line below
# if pinging seems to be out of order. Please notify the author if it helps!
SUP_log("NOT pinging services (“".$post_title."” was edited)");
SUP_log("NOT pinging services (a post was edited)");
SUP_log("NOT pinging services (disabled by administrator)");
# More or less a copy of WP's "generic_ping" from functions.php,
# but uses another function to send the actual XML-RPC messages.
$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)
# A slightly modified version of the WordPress built-in ping functionality ("weblog_ping" in functions.php).
# This one uses correct extendedPing format (WP does not), and logs response from service.
function SUP_send_xmlrpc($server = '', $path = '')
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') );
# the extendedPing format should be "blog name", "blog url", "check url" (whatever that is), and "feed url",
# but it would seem as if the standard has been mixed up. it's therefore best to repeat the feed url.
if($client->query('weblogUpdates.extendedPing', get_settings('blogname'), $home, get_bloginfo('rss2_url'), get_bloginfo('rss2_url')))
SUP_log("- ".$server." was successfully pinged (extended format)");
# pinging was unsuccessful, trying regular ping format
if($client->query('weblogUpdates.ping', get_settings('blogname'), $home))
SUP_log("- ".$server." was successfully pinged");
SUP_log("- ".$server." could not be pinged. Error message: “".$client->error->message."”");
$post_title = "";
# Receives the title of the post from a filter below
$post_title = $title;
# Log stuff
$logfile = ABSPATH."wp-content/smart-update-pinger.log";
# for debugging
$fh = @fopen($logfile, "a");
@fwrite($fh, strftime("%D %T")."\t$line\n");
$lines = @file($logfile);
if($lines === false)
return "Error reading log file (".$logfile."). This could mean that the wp-content directory is write-protected and no log data can be saved, that you have manually removed the log file, or that you have recently upgraded the plugin.";
$lines = array_slice($lines, count($lines) - $num);
$msg = "";
foreach($lines as $line)
$msg .= trim($line)." ";
# adds a filter to receive the title of the post before publishing
# adds some hooks
# shows the options in the administration panel
# calls SUP_ping whenever a post is published
# calls SUP_ping_draft when changing the status from private/draft to published
# add_action("private_to_published', 'SUP_ping_draft');
# removes the "WordPress official" pinging hook
# activates pinging if setting doesn't exist in database yet
# (before the user has changed the settings the first time)
if(get_option("SUP_ping") === false)
Pixadecimal :: Better Applications By Design
When you're a boutique agency time is precious. So it has taken a while for us to schedule in a site redesign. Fortunately we managed to tie it all down in a matter of weeks in-between projects. We like the new design and hopefully so will you, and while we still have a lot planned for the site, we also need to make sure client work is finished too. So this site is designed to scale and grow as we get time to add and update each new section.
We’ve got another app out folks. this time it’s a simple fun, (but educational) app for iOS using Morse code – imaginatively named Morse! Taking advantage of your phone’s torch you can type a message, the same way you...
While we are a small agency (2 1/2 if you count Jpeg), we have a wealth of experience working on large scale projects as part of an integrated team, collaboration or just by ourselves. So if you want to...
When not working on finely crafted solution and products here at Pixadecimal Towers, we like to play games. Lots of games. Board games, video games & card games. One of our long standing favourites is Magic The Gathering and...