. */ # Known/outstanding issues: # [UNCONFIRMED ISSUE] Plugin seems to keep pinging when importing an XML/WXR file even if pinging is disabled # Plugin does not seem to report any errors if it cannot write to the log file (see E2 blog for example) function SUP_add_options_page(){ if(function_exists("add_options_page")) add_options_page("UP Smart Update Pinger", "UP Smart Update Pinger", 5, basename(__FILE__), "SUP_show_options_page"); } function SUP_show_options_page(){ global $logfile; $ping = get_option("SUP_ping"); $pinglog = get_option("SUP_pinglog"); $uris = get_option("ping_sites"); $forcedpings = false; $SUP_output_log=''; $pingservicesnow = "Ping Services Now!"; $deletelogfile = "Delete Log File"; if(isset($_POST["ping"]) && $_POST["ping"] == $pingservicesnow){ $forcedpings = true; SUP_log(SUP_ping_services($forcedpings).strftime("%D %T")."\tForced pinging services (Homepage)\n\t─────\n"); }elseif(isset($_POST["submit"])){ $uris = $_POST["uris"]; $ping = 0; if($_POST["ping"] == 1) $ping = 1; $pinglog = 0; if($_POST["pinglog"] == 1) $pinglog = 1; update_option("SUP_ping", $ping); update_option("SUP_pinglog", $pinglog); update_option("ping_sites", $uris); echo '

Options saved.

'; }elseif(isset($_POST["delete"]) && $_POST["delete"] == $deletelogfile){ $fh = @fopen($logfile, "w"); if(false === @fwrite($fh, strftime("%D %T")."\tLog file deleted\n\t─────\n")){ update_option("SUP_error", 1); }else{ update_option("SUP_error", 0); } @fclose($fh); } $checked1 = ''; if($ping == 1) $checked1 = 'checked="checked"'; $checked2 = ''; if($pinglog == 1) $checked2 = 'checked="checked"'; echo '

Ultimate Plugins Smart Update Pinger

Click here for installation instructions

Click here for usage instructions

Click here for updated versions

Click here for comments and suggestions

URIs to Ping

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

This plugin also fixes an issue with the default extended ping programming in Wordpress and pre-2.1 versions of Smart Update Pinger (it now includes the url of the new post).

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

Separate multiple service URIs with line breaks:

Ping log

These are the last 100 actions performed by the plugin. In reverse chronological order for easier reading (latest ping first).

'; SUP_get_last_log_entries(500); echo '

'; } # 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; $SUP_output_log="\t─────\n"; $SUP_ping_result=''; $forcedpings = false; if(get_option('SUP_ping') == 1 && trim(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,post_title,guid FROM $wpdb->posts WHERE id=$id")); "SELECT post_date,post_modified,post_title 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_title"]){ $SUP_output_log=strftime("%D %T")."\tNOT Pinging services (ERROR: YOU HAVE FORGOTTEN TO ENTER A POST TITLE) ...\n".$SUP_output_log; }else{ if($row["post_date"] == $row["post_modified"]){ $SUP_output_log=strftime("%D %T")."\tPinging services (New normal post: “".$row["post_title"]."”) ...\n".$SUP_output_log; $SUP_output_log=SUP_ping_services($forcedpings,get_permalink($id)).$SUP_output_log; # 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{ // Post has been edited or it's a future post // If we have a post title it means that we are in the normal WP loop and therefore it was an edit (not a future post) if($post_title){ $SUP_output_log=strftime("%D %T")."\tNOT Pinging services (Existing post was edited: “".$row["post_title"]."”) ...\n".$SUP_output_log; }else{ $SUP_output_log=strftime("%D %T")."\tPinging services (New timestamped post: “".$row["post_title"]."”) ...\n".$SUP_output_log; $SUP_output_log=SUP_ping_services($forcedpings,get_permalink($id)).$SUP_output_log; # 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 (trim(get_option('ping_sites')) != ""){ $SUP_output_log=strftime("%D %T")."\tNOT Pinging services (WARNING: DISABLED BY ADMINISTRATOR)\n".$SUP_output_log; }else{ $SUP_output_log=strftime("%D %T")."\tNOT Pinging services (WARNING: EMPTY PING SERVICES LIST)\n".$SUP_output_log; } } SUP_log($SUP_output_log); } # 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($forcedpings,$SUP_guid = ''){ $SUP_output_log=''; #$services = get_settings('ping_sites'); #UP - 17.07.07 - get_option is newer/better then get_settings $services = get_option('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_output_log=SUP_send_xmlrpc($forcedpings,$SUP_guid,$service).$SUP_output_log; } return $SUP_output_log; } # A slightly modified version of the WordPress built-in ping functionality ("weblog_ping" in functions.php). # Original version: #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_option('blogname'), $home, get_bloginfo('rss2_url') ) ) // then try a normal ping #$client->query('weblogUpdates.ping', get_option('blogname'), $home); #} # This one uses correct extendedPing format (WP does not), and logs response from service. function SUP_send_xmlrpc($forcedpings,$SUP_guid = '',$server = '', $path = ''){ global $wp_version; $SUP_output_log=''; include_once (ABSPATH . WPINC . '/class-IXR.php'); // using a timeout of 5 seconds should be enough to cover slow servers (changed from 3 to 5) $client = new IXR_Client($server, ((!strlen(trim($path)) || ('/' == $path)) ? false : $path)); $client->timeout = 5; $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" (the new URL), and "feed url". # Related Website(s) # http://www.weblogs.com/api.html # An example: # Someblog - Title # http://spaces.msn.com/someblog - Home URL # http://spaces.msn.com/someblog/PersonalSpace.aspx?something - Check/New URL # http://spaces.msn.com/someblog/feed.rss - Feed # Changed the following line therefore: # if($client->query('weblogUpdates.extendedPing', get_settings('blogname'), $home, get_bloginfo('rss2_url'), get_bloginfo('rss2_url'))) if ($forcedpings){ # If this is a forced ping it's better to use a regular ping for the homepage without an update URL (safer) if($client->query('weblogUpdates.ping', get_option('blogname'), $home)){ $SUP_output_log=strftime("%D %T")."\t► [Regular Ping] ".$server." was successfully pinged\n".$SUP_output_log; if (get_option('SUP_pinglog') == 1){ $SUP_output_log=strftime("%D %T")."\t►► Blogname: '".get_option('blogname')."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► Homepage: '".$home."'\n".$SUP_output_log; } }else{ $SUP_output_log=strftime("%D %T")."\t► ".$server." could not be pinged. Error message: “".$client->error->message."”\n".$SUP_output_log; } }else{ if($client->query('weblogUpdates.extendedPing', get_option('blogname'), $home, $SUP_guid, get_bloginfo('rss2_url'))){ $SUP_output_log=strftime("%D %T")."\t► [Extended Ping] ".$server." was successfully pinged\n".$SUP_output_log; if (get_option('SUP_pinglog') == 1){ $SUP_output_log=strftime("%D %T")."\t►► Blogname: '".get_option('blogname')."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► Homepage: '".$home."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► Updated : '".$SUP_guid."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► RSS URL : '".get_bloginfo('rss2_url')."'\n".$SUP_output_log; } }else{ # pinging was unsuccessful, trying regular ping format if($client->query('weblogUpdates.ping', get_option('blogname'), $home)){ $SUP_output_log=strftime("%D %T")."\t► [Regular Ping] ".$server." was successfully pinged\n".$SUP_output_log; if (get_option('SUP_pinglog') == 1){ $SUP_output_log=strftime("%D %T")."\t►► Blogname: '".get_option('blogname')."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► Homepage: '".$home."'\n".$SUP_output_log; } }else{ $SUP_output_log=strftime("%D %T")."\t► ".$server." could not be pinged. Error message: “".$client->error->message."”\n".$SUP_output_log; } } } return $SUP_output_log; } $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 $logfile = ABSPATH . 'wp-content/plugins/ultimate-plugins-smart-update-pinger/ultimate-plugins-smart-update-pinger.log'; function SUP_log($SUP_log_output){ global $logfile; $logerror = 0; $fh = @fopen($logfile, "a"); if(false === @fwrite($fh, $SUP_log_output)){ update_option("SUP_error", 1); }else{ update_option("SUP_error", 0); } @fclose($fh); } function SUP_get_last_log_entries($num){ global $logfile; $lines = @file($logfile); if(get_option("SUP_error") == 1){ $fh = @fopen($logfile, "a"); if(false === @fwrite($fh, "")){ echo "Error writing log file (".$logfile."). Most likely your logfile (".$logfile.") is write-protected and no log data can be saved (change the rights of this file to 777), or alternatively this could mean that you have manually removed the log file, or that you have changed the directory or file name of the plugin (they both should be 'ultimate-plugins-smart-update-pinger')"; }else{ // Original: $lines = array_slice($lines, count($lines) - $num); // Modified to show in reverse order (easier for reading) $lines = array_reverse(array_slice($lines, count($lines) - $num)); $msg = ""; foreach($lines as $line){ $msg.=trim($line)."
"; } echo $msg; } @fclose($fh); }else{ if($lines === false){ echo "Error reading log file (".$logfile."). Most likely you have manually removed the log file, or alternatively this could mean that the logfile (".$logfile.") is read-protected (change the rights of this file to 777), or that you have changed the directory or file name of the plugin (they both should be 'ultimate-plugins-smart-update-pinger')"; }else{ // Original: $lines = array_slice($lines, count($lines) - $num); // Modified to show in reverse order (easier for reading) $lines = array_reverse(array_slice($lines, count($lines) - $num)); $msg = ""; foreach($lines as $line){ $msg.=trim($line)."
"; } echo $msg; } } } # adds a filter to receive the title of the post before publishing add_filter("title_save_pre", "SUP_post_title"); # 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);} if(get_option("SUP_pinglog") === false){update_option("SUP_pinglog", 1);} if(get_option("SUP_error") === false){update_option("SUP_error", 0);} ?> Comments for Kite 2012 https://kite2012.com Kitesurfing News Year 2012-2016! Thu, 03 Dec 2015 16:16:01 +0000 hourly 1 https://wordpress.org/?v=5.6 Comment on Links by Luis Lozano https://kite2012.com/links/#comment-112126 Thu, 03 Dec 2015 16:16:01 +0000 https://kite2012.com/?page_id=1335#comment-112126 Escuela Kiteboard Mèxico School is Riviera Maya`s freshest kitesurf scene with the Best Kiteboarding Gear, Kitesurfing Lessons & The Prefect Kiteboarding Spots.

BEST SPOT IN MEXICO
BEST PRICE GUARRANTY
free transportation all riviera maya

]]>
Comment on How To Prevent Kite Injuries by Lexie https://kite2012.com/kite-injury/#comment-109898 Thu, 05 Nov 2015 13:35:53 +0000 https://kite2012.com/?page_id=684#comment-109898 Excellent resource, clearly explained. Thank you. .

]]>
Comment on slingshot rpm 8m by kite2012 https://kite2012.com/second-hand-kite-think-twice-before-you-buy/slingshot-rpm-8m/#comment-76547 Wed, 22 Apr 2015 08:47:39 +0000 https://kite2012.com/wp-content/uploads/slingshot-rpm-8m.png#comment-76547 In reply to Arnulf.

Well, I´m sure you can find it second hand

]]>
Comment on slingshot rpm 8m by Arnulf https://kite2012.com/second-hand-kite-think-twice-before-you-buy/slingshot-rpm-8m/#comment-76002 Mon, 20 Apr 2015 11:31:50 +0000 https://kite2012.com/wp-content/uploads/slingshot-rpm-8m.png#comment-76002 Hi,

is this kite still 4sale?

Please contact!

cheers
Arnulf

]]>
Comment on About Kite 2012 by Gray Robinson https://kite2012.com/about-kite-2012/#comment-74826 Wed, 15 Apr 2015 13:23:17 +0000 https://kite2012.com/?page_id=2#comment-74826 hi I would like to post a link to my school here is it possible?

]]>
Comment on durian fruit boracay by kite2012 https://kite2012.com/insect-bite-scratch-sea-water-infection/durian-fruit-boracay/#comment-65266 Tue, 10 Mar 2015 11:19:34 +0000 https://kite2012.com/wp-content/uploads/durian-fruit-boracay.jpg#comment-65266 In reply to Christina.

It taste “funny”. Sweet and creamy.

]]>
Comment on durian fruit boracay by Christina https://kite2012.com/insect-bite-scratch-sea-water-infection/durian-fruit-boracay/#comment-63762 Tue, 03 Mar 2015 18:08:14 +0000 https://kite2012.com/wp-content/uploads/durian-fruit-boracay.jpg#comment-63762 Wow that looks so cool! what does it taste like?

]]>
Comment on Links by Kitesurf Mexico https://kite2012.com/links/#comment-28283 Mon, 30 Jun 2014 05:13:19 +0000 https://kite2012.com/?page_id=1335#comment-28283 Kiteboarding school Playa del Carmen ”(url=https://kitesurfmexico.com/en/)Kiteboarding Playa del Carmen(/url)
Kitesurf Mexico is the only Kite School in Playa del Carmen that has a Private, Exclusive Beach with no Public Access in the heart of the Riviera Maya. just 8 Km. south of Playa del Carmen, inside the Punta Venado Caribbean Eco Park, 1990 hectares of Jungle and 2.5 Km. of beautiful pristine Caribbean Beaches.
This area includes our school, which is on a bay that offers the perfecto conditions for Kiteboarding, free from tourists and other kiters. The spot offers the first 30 meters (90 feet) of shallow, calm water, which allows us to teach Kiteboarding under the best safety conditions, making learning this wonderful sport faster for the student.

Usually, our kite lessons are dictated in periods of 3 hours per day, which can be taken during the morning or afternoon, depending on availability and weather conditions.
The first hour of the course consists of an explanation of Wind Theory, responsible gear use, and the necessary safety methods and precautions for kiteboarding.
After that, and using a small, short-lined kite, we begin to learn Kite Control on the water. This is possible thanks to the optimum conditions offered by our private beach, such as shallow, flat water. This way the student can learn how to control a real kite in low-power conditions that make learning easier and faster.

The Kite lessons continue on water. The next step is learning how to control the movement of the kite, exploring the whole wind-window. The student does this while standing at waist-high water level, and always accompanied by a professional instructor.

Once the student can control the kite on the whole wind-window while standing, it’s time to learn how to control the kite while in motion, to later on move on to “Body Drag” which means letting the Kite drag the weight of your body while you navigate in the desired direction. This is possible thanks to the control of the Kite obtained during the previous step.

Finally, the student must learn to stand on the board using the power of the kite. This is called “Water start” and it’s the last step in the basic course.
At this stage, the student is able to Kiteboard independently, even if only for a few meters at a time.

Kite Conditions:
Best Season: January, February, March, April, May, June, November, and December.
Useful Wind directions: NE-E-SE-S, sideonshore el 80% of the time. Clean wind and clear waters, sometimes flat or with smooth waves depending on the wind direction.

]]>
Comment on Links by Kitesurf Mexico https://kite2012.com/links/#comment-12940 Thu, 14 Nov 2013 01:57:59 +0000 https://kite2012.com/?page_id=1335#comment-12940 Kitesurf School Playa de Carmen
has a special location. A virgin beach where it is possible to kitesurf in complete freedom. The perfect spot to enjoy your kiteboard course in complete safety and with great water conditions. It is a few kilometers to the south of Playa del Carmen.

Our school allowed to practice kitesurfing (kiteboarding, kitesurfing …) safely under the supervision of our expert instructors, in our exclusive private beach.

]]>
Comment on Top 5 Kite surfing Camps by Jack Kiter https://kite2012.com/top-5-kite-surfing-camps/#comment-8393 Sun, 10 Mar 2013 00:17:25 +0000 https://kite2012.com/?p=2570#comment-8393 While searching the internet for a kitesurf camp I came across a few really good sites.
This one has 6 listed, some good, some not so much. I found another good Kiteboard Camp in Brazil, it has has 3 different Camps aimed at separate rider markets. Maybe this site should include it here? If you want to check it out, I think its worth it, the site is http://www.kiteboardcampbrasil.com take a look and see for yourself.
Happy Kiting all.
Cheers
Jack

]]>