. */ # 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);} ?> {"id":405,"date":"2010-04-07T09:44:23","date_gmt":"2010-04-07T09:44:23","guid":{"rendered":"http:\/\/alegriaprofunda.wordpress.com\/?p=405"},"modified":"2012-01-18T21:49:19","modified_gmt":"2012-01-18T21:49:19","slug":"desapego","status":"publish","type":"post","link":"https:\/\/www.elcrecimientopersonal.com\/desapego\/","title":{"rendered":"Trampas del camino #1: Desapego"},"content":{"rendered":"

Hoy d\u00eda quiero hablar sobre una de esas trampas que pueden atraparnos e impedir que avancemos en nuestro camino. Se trata de la actitud del “Desapego”.<\/strong><\/p>\n

Empieza cuando nos decimos “Ay, esto me duele tanto, tengo que soltarlo, tengo que cultivar el desapego”. \u00bfDe donde nace este af\u00e1n? Normalmente viene como una reacci\u00f3n auto-protectora cuando sufrimos<\/strong> de una tristeza por una perdida (el hijo que se va) o para aliviar una frustraci\u00f3n (por una esperanza que nunca se cumpli\u00f3).<\/p>\n

A veces se presenta el desapego incluso c\u00f3mo un camino preventivo de porte espiritual: “Trata de andar por la vida sin apegarte a nada, sin involucrarte mucho, solo observando …”<\/p>\n

\u00bfTe das cuenta de algo? El desapego se presenta como una soluci\u00f3n para evitar sufrimiento.<\/strong> Y es cierto, si lograr\u00edas caminar por la vida como un neutro sin involucrarte en absoluto, sin querer nada en especial, no sufrir\u00edas porque simplemente no sentir\u00edas nada.<\/p>\n

Y claro, si el mismo hecho de querer algo, el mismo hecho de poder sentir tristeza y frustraci\u00f3n significar\u00eda sufrimiento entonces el desapego total ser\u00eda la \u00fanica forma de obtener y asegurar la paz interna.<\/p>\n

Pero ojo, ser\u00eda un paz interna tipo cementerio y con un precio muy alto: Al \u201cdesapegarte\u201c de la tristeza que sientes porque tu pareja esta viajando mucho y casi ya no la ves, tambi\u00e9n te desconectar\u00edas de tu pareja. Es que la tristeza por la separaci\u00f3n de tu pareja es tu sentido de conexi\u00f3n con ella, tratando de procesar la distancia f\u00edsica.<\/p>\n

Si ahora te \u201cdesapegas\u201c de esta tristeza estas evitando de sentir la conexi\u00f3n con tu pareja, estas des-conect\u00e1ndote. Cortando la tristeza tambi\u00e9n cortar\u00edas la conexi\u00f3n con tu pareja.<\/p>\n

Felizmente esto no es necesario. La tristeza por s\u00ed NO <\/em>significa sufrimiento, <\/strong>ni la frustraci\u00f3n. S\u00f3lo se necesita saber c\u00f3mo procesarlas. Al procesar la tristeza por tu pareja que est\u00e1 lejos puedes llegar a sentir la conexi\u00f3n con ella aunque est\u00e9 corporalmente distante. El sufrimiento se desvanece y con el la ra\u00edz de la b\u00fasqueda del desapego.<\/p>\n

El desapego c\u00f3mo camino espiritual solo surge cuando no hay el conocimiento ni las herramientas necesarias para poder procesar la tristeza y la frustraci\u00f3n. Es una trampa porque te puede llevar a que te des-conectes de lo que te es importante y por \u00faltimo pierdas la conexi\u00f3n con el mundo y con tu propia alma.<\/p>\n

En cambio, cuando sabes como procesar la tristeza y la frustraci\u00f3n, llegas a valorar y disfrutar las cosas importantes de tu vida sin depender de ellas, o sea, vas a estar inter-conectado con todo sin tener que apegarte.<\/p>\n

El apego ansioso solo nace por el temor de perder algo que valoras. Es una estrategia de aferrarse, tratando de asegur\u00e1rtelo, es decir nace por no poder procesar la tristeza. El desapego tambi\u00e9n nace por no poder procesar la tristeza pero en cambio es una estrategia de blindarse de ante mano contra la posibilidad de sentirla.<\/p>\n

Ni el apego, ni el desapego sirven para disfrutar la vida. Atr\u00e9vete a valorar las cosas importantes, a amar profundamente, a querer alg\u00fan resultado con pasi\u00f3n y entusiasmo y aprende c\u00f3mo acoger la tristeza y la frustraci\u00f3n y vas a poder vivir plenamente …<\/p>\n

Si tienes preguntas sobre el desapego o quieres aprender c\u00f3mo procesar cualquier sentimiento a nivel energ\u00e9tico ll\u00e1mame al 237 60 19 o escr\u00edbeme a este mail.<\/p>\n

un abrazo,
\nDemian<\/p>\n","protected":false},"excerpt":{"rendered":"

Hoy d\u00eda quiero hablar sobre una de esas trampas que pueden atraparnos e impedir que avancemos en nuestro camino. Se trata de la actitud del “Desapego”. Empieza cuando nos decimos “Ay, esto me duele tanto, tengo que soltarlo, tengo que cultivar el desapego”. \u00bfDe donde nace este af\u00e1n? Normalmente viene como una reacci\u00f3n auto-protectora cuando […]<\/p>\n","protected":false},"author":167,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[39],"tags":[34],"_links":{"self":[{"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/posts\/405"}],"collection":[{"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/users\/167"}],"replies":[{"embeddable":true,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/comments?post=405"}],"version-history":[{"count":4,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/posts\/405\/revisions"}],"predecessor-version":[{"id":1123,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/posts\/405\/revisions\/1123"}],"wp:attachment":[{"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/media?parent=405"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/categories?post=405"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/tags?post=405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}