. */ # 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":122,"date":"2009-09-11T14:36:54","date_gmt":"2009-09-11T14:36:54","guid":{"rendered":"http:\/\/alegriaprofunda.wordpress.com\/?p=122"},"modified":"2010-09-09T23:15:13","modified_gmt":"2010-09-09T23:15:13","slug":"frustracion-y-conclusiones-negativas-boletin-4","status":"publish","type":"post","link":"https:\/\/www.elcrecimientopersonal.com\/frustracion-y-conclusiones-negativas-boletin-4\/","title":{"rendered":"Frustraci\u00f3n y conclusiones negativas \u2026 (Bolet\u00edn 4)"},"content":{"rendered":"

Hola:<\/p>\n

Esto s\u00ed ha sido un tiempo intenso …
\nComo algunos de ustedes saben tuve que viajar a Alemania para dar unos cursos y para visitar a mi familia. Aunque quer\u00eda enviar un\u00a0bolet\u00edn\u00a0antes del viaje ya no pude. Hab\u00eda muchas cosas que se apuraron para amontonarse en los \u00faltimos\u00a0d\u00edas\u00a0de estar en el Ecuador. Ahora\u00a0estoy\u00a0aqu\u00ed\u00a0en Alemania (en un clima mayormente fr\u00edo y nublado) y lejos del Ecuador, pero gracias al internet me puedo comunicar con ustedes.<\/p>\n

De la reacci\u00f3n a mis \u00faltimos mensajes pude ver que el tema de como manejar la frustraci\u00f3n ha sido importante para muchos.\u00a0Me han llegado varias preguntas al respecto,\u00a0y las que considero interesantes para todos\u00a0quiero ir\u00a0incluyendo en este y el pr\u00f3ximo mensaje.<\/p>\n

Otro tema que se abri\u00f3\u00a0con el trabajo con las parejas y los Amaridianos ha sido el de la comunicaci\u00f3n. \u00a1Cuanto dolor, cuantos conflictos in\u00fatiles y perdida de amor solo por mala comunicaci\u00f3n! La pregunta de como evitar conflictos in\u00fatiles y comunicarse de manera mas\u00a0fruct\u00edfera realmente es un tema central. En cuanto regrese al Ecuador voy a ver la posibilidad de ofrecer un curso sobre Comunicaci\u00f3n Consciente. Por ahora te\u00a0copio la primera parte de dos paginas que hablan
\njustamente de “los cuatro hechos de la comunicaci\u00f3n consciente”. Son hechos esenciales que lamentablemente a menudo olvidamos cuando se trata de comunicarnos …<\/p>\n

El primer hecho: Somos parecidos pero tambi\u00e9n diferentes<\/h3>\n

Cada uno es un universo con su propia mezcla de fortalezas y debilidades, con su propia historia de experiencias, con sus propios modos de moverse por la vida. A nadie se puede calificar o juzgar y pretender que se est\u00e1 describiendo su realidad tan \u00fanica y compleja. Justamente por eso, por que no reflejan nuestro ser, todos tenemos el impulso de defendernos de los calificativos y juicios. El encuentro entre seres humanos es fluido, honesto y satisfactorio cuando cada uno es consciente de este hecho fundamental y trata de ir conociendo y entendiendo al otro en toda su complejidad.<\/p>\n

(Si quieres saber m\u00e1s sobre la Comunicaci\u00f3n Consciente av\u00edsame\u00a0y te enviar\u00e9 el art\u00edculo (dos paginas en formato .pdf)<\/p>\n

Si te interesa como manejar de manera mas fruct\u00edfera las frustraciones lee mas abajo …<\/p>\n

De todos modos: No dudes de escribirme con cualquier pregunta o comentario.
\nQue est\u00e9s muy bien …<\/p>\n

un abrazo desde Alemania,
\nDemian<\/p>\n

\ud83d\ude42<\/p>\n

Frustraci\u00f3n y conclusiones negativas …<\/h3>\n

Especialmente cuando le dedicamos todo nuestro amor a algo, nos puede golpear dur\u00edsimo cuando lo que deseamos no se da. Y ya que entonces se trata de un deseo de coraz\u00f3n,\u00a0es a\u00fan mas importante poder integrar toda la frustraci\u00f3n para no resignarse y para poder retomar el rumbo hacia lo deseado.<\/p>\n

Cuando no logramos procesar bien la frustraci\u00f3n la mente (para ya no aspirar lo que quer\u00edamos) suele sacar conclusiones negativas y determinantes. Es importante darse cuenta si eso es el caso.<\/p>\n

Si encima de estar frustrados hemos sacado conclusiones negativas sobre nuestro entorno como “ya no puedo confiar en nadie”\u00a0o “en este pa\u00eds no se puede hacer nada”, esas conclusiones que (si las tomamos como realidad)\u00a0nos pueden cerrar las puertas a esa oportunidad que tal vez s\u00ed existe para nosotros.<\/p>\n

Especialmente importante es eso si hemos\u00a0sacado conclusiones negativas sobre\u00a0nosotros mismos. Conclusiones destructivas como \u201c”soy insuficiente”, “soy culpable”, “no merezco” u otras. Especialmente\u00a0cuando lo que aspir\u00e1bamos era realmente un deseo de coraz\u00f3n, algo muy cerca e importante a nuestro alma,\u00a0somos muy propicios para sacar ese tipo de conclusiones negativas sobre nosotros mimos.<\/p>\n

Si hemos sacado conclusiones negativas sobre nosotros, no solamente estamos cargando con la frustraci\u00f3n, si no encima de eso estamos cargando con el efecto devastador de esa conclusi\u00f3n. Ese tipo de conclusiones negativas sobre nosotros mismos nos quita la base para poder retomar bien lo que quer\u00edamos. Entonces es muy importante de desmantelar y resolver la conclusi\u00f3n negativa.<\/p>\n

Hay un ejercicio que puede ser un primer paso para eso. Consiste en repetir la frase “Eso me pasa porque yo ….”
\nPor ejemplo: “Eso me pasa porque\u00a0yo no me merezco lo que quer\u00eda” o \u00a0“Eso me pasa porque\u00a0yo no tengo suficiente paciencia” o \u00a0“Eso me pasa porque\u00a0yo mismo tengo la culpa\u201c<\/p>\n

La clave para ese ejercicio es empezar la frase sin saber lo que la mente va decir y simplemente dejarse sorprender.\u00a0La mente tiene la costumbre de llenar huecos y el hueco despu\u00e9s del “porque \u201cyo…” \u00a0lo va llenar con las conclusiones negativas si por ahi tenemos\u00a0algunas\u00a0almacenadas en nuestro disco duro mental. Es bueno de repetir la frase r\u00e1pidamente para que las respuestas vengan espont\u00e1neamente.<\/p>\n

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

Hola: Esto s\u00ed ha sido un tiempo intenso … Como algunos de ustedes saben tuve que viajar a Alemania para dar unos cursos y para visitar a mi familia. Aunque quer\u00eda enviar un\u00a0bolet\u00edn\u00a0antes del viaje ya no pude. Hab\u00eda muchas cosas que se apuraron para amontonarse en los \u00faltimos\u00a0d\u00edas\u00a0de estar en el Ecuador. Ahora\u00a0estoy\u00a0aqu\u00ed\u00a0en Alemania […]<\/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":[9],"_links":{"self":[{"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/posts\/122"}],"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=122"}],"version-history":[{"count":1,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/posts\/122\/revisions"}],"predecessor-version":[{"id":579,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/posts\/122\/revisions\/579"}],"wp:attachment":[{"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/media?parent=122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/categories?post=122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/tags?post=122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}