Options saved.

'; } $checked = ''; if($ping == 1) $checked = 'checked="checked"'; echo '

URIs to Ping

The following services will automatically be pinged/notified when you publish posts. Not when you edit previously published posts, as WordPress does by default.

NB: this list is synchronized with the original update services list.

Separate multiple service URIs with line breaks:

Ping log

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 function SUP_ping_if_new($id) { 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( "SELECT post_date,post_modified FROM $wpdb->posts WHERE id=$id")); # 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"]) { if($post_title) SUP_log("Pinging services (new post: “".$post_title."”) ..."); else SUP_log("Pinging services (new post) ..."); SUP_ping_services(); # 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! # generic_ping(); } else { if($post_title) SUP_log("NOT pinging services (“".$post_title."” was edited)"); else SUP_log("NOT pinging services (a post was edited)"); } } else 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. function SUP_ping_services() { $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) SUP_send_xmlrpc($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 = '') { 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') ); # 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)"); } else { # pinging was unsuccessful, trying regular ping format if($client->query('weblogUpdates.ping', get_settings('blogname'), $home)) { SUP_log("- ".$server." was successfully pinged"); } else { SUP_log("- ".$server." could not be pinged. Error message: “".$client->error->message."”"); } } } $post_title = ""; # Receives the title of the post from a filter below function SUP_post_title($title) { global $post_title; $post_title = $title; return $title; } # ----- # Log stuff $logfile = ABSPATH."wp-content/smart-update-pinger.log"; # for debugging function SUP_log($line) { global $logfile; $fh = @fopen($logfile, "a"); @fwrite($fh, strftime("%D %T")."\t$line\n"); @fclose($fh); } function SUP_get_last_log_entries($num) { global $logfile; $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."; else { $lines = array_slice($lines, count($lines) - $num); $msg = ""; foreach($lines as $line) $msg .= trim($line)."
"; return $msg; } } # ----- # adds a filter to receive the title of the post before publishing add_filter("title_save_pre", "SUP_post_title"); # adds some hooks # shows the options in the administration panel add_action("admin_menu", "SUP_add_options_page"); # calls SUP_ping whenever a post is published add_action("publish_post", "SUP_ping_if_new"); # 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 remove_action("publish_post", "generic_ping"); # 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) { update_option("SUP_ping", 1); } ?> Flex Builder Ant Scripts | .: Blog.FlashGen.Com :: Mike Jones - Creative Technologist :.

./Flex Builder Ant Scripts

Welcome to the FlashGen.Com Flex Biulder Ant Script page.Here you will find the latest information on the Flex Builder Ant scripts developed to in some way make your development processes smoother and easier.

Articles on how to use these scripts:

At this point in time these scripts will only work on Mac OS X 10.4+ (tested) and *nix (untested). This is due to the fact that they utilise a lot of bash shell commands. I suspect you would have no trouble using them on Windows but you will need to install Cygwin. A Windows version is planned in the future but no firm releae date has been set.

Currently these scripts include the following:

  • Generate a custom Manifest.xml file (used in the Flex Library, advanced compiling and namespace management)
  • Generate a custom Config.xml file (allowing the overriding of compiler information and remove the need to set flags in the preferences panel)
  • ASDoc support from within Flex Builder (this one is a biggy for Mac users as there is a pathing bug in the ASDoc scripts that prevent paths with spaces working correctly)

Things on the todo list are:

  • Add in the services parameter (this I have working but I just need to tidy up the logic in the main script)
  • Include my ASDocs tasks
  • Include a few more of the compiler parameters
  • Work out how to get the code hinting to work if you use a namespace in this manner as opposed to the xxx.* style namesapces
  • Windows version

Download the latest version of the scripts here*

*Please note these are provided without warranty or support and FlashGen.Com cannot be held responsible if these scripts achieve world dominance or just mess stuff up!

Change Log

  • Fixed ASDoc Ant task
  • Added additional parameters to ASDoc execution
  • Added Window text support
  • Added Page title text support
  • Added Footer text support
  • Updated Symbolic Linking to automatically remove at process exit


  • Added ASDoc support in Ant script
  • Added script sub directory
  • Added Symbolic linking
  • Migrated external scripts to script directory


  • Fixed erroneous parameter in Ant task
  • Added services support in Ant and Shell scripts


  • Added flex-config support
  • Added manifest sorting
  • Added manifest commenting of base files


  • Fixed manifest xml regex
  • Added flex-config parameters to Ant script


  • Created Shell script "GenerateConfig"


  • Fixed regex bug in directory listing
  • Added find command to "GenerateManifest"
  • Added external parameters for directory location
  • Removed ls command


  • Created initial Shell script GenerateManifest
  • Created initial Ant script
  • Added initial sed regex for directory manipulation of files

Known Issues:
0.7: If your main application file name is lower case the XML manifest will not convert it (Regex)
0.5: Additional Ant parameter being passed in task to create custom flex-config XML)
0.3: Regex doesn’t comment out root MXML file by default
0.1: Regex issue when writing directory listing (ordering is not correct)