. */ # 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":46,"date":"2009-09-07T15:05:24","date_gmt":"2009-09-07T15:05:24","guid":{"rendered":"http:\/\/boletindemian.wordpress.com\/?page_id=46"},"modified":"2009-09-07T15:05:24","modified_gmt":"2009-09-07T15:05:24","slug":"comunicacion-consciente","status":"publish","type":"page","link":"https:\/\/www.elcrecimientopersonal.com\/comunicacion-consciente\/","title":{"rendered":"Comunicaci\u00f3n Consciente"},"content":{"rendered":"

\u201cComunicarse significa llegar con nuestro mensaje al otro.
\nA veces nos expresamos sin que el otro
\npueda recibir nuestro mensaje tal como queremos.
\nEntonces hay expresi\u00f3n pero no hay comunicaci\u00f3n.
\nComunicaci\u00f3n Consciente significa asegurar
\nque nuestro mensaje llegue al otro.\u201c<\/strong><\/em><\/span><\/p>\n

La <\/span>verdad es que todos queremos poder expresarnos aut\u00e9nticamente y sentirnos comprendidos. Queremos que la comunicaci\u00f3n fluya fruct\u00edferamente en nuestras relaciones de pareja, entre padres e hijos y en grupos de trabajo.<\/p>\n

En mi experiencia ha sido muy satisfactorio poder observar c\u00f3mo la “Comunicaci\u00f3n Consciente” ha ayudado a llevar conflictos destructivos a una relaci\u00f3n de mayor comprensi\u00f3n y desarrollo mutuo.<\/p>\n

Hay cuatro hechos de la comunicaci\u00f3n entre seres humanos que nos olvidamos cuando entramos en conflictos destructivos. El siguiente art\u00edculo explica en forma breve esos hechos, que a su vez son los fundamentos de la Comunicaci\u00f3n Consciente como m\u00e9todo.<\/p>\n

Los Cuatro Hechos de la Comunicaci\u00f3n Consciente<\/span><\/h2>\n

\n

1. Somos parecidos pero tambi\u00e9n diferentes<\/strong><\/span><\/h3>\n

Cada uno de nosotros es un universo en s\u00ed 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, porque los juicios no reflejan nuestra realidad, tenemos el impulso vital de defendernos de calificativos limitantes y juicios negativos. 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

\n

2. Compartimos la misma gama de necesidades<\/span><\/h3>\n

Nuestras necesidades son la base sobre cual sentimos y actuamos todos. Revisa la siguiente lista b\u00e1sica sintiendo cuales ser\u00edan tus propias necesidades actuales:<\/p>\n

\"nececidad\"<\/p>\n

\n

\n

\n

3. Queremos contribuir mutuamente<\/strong><\/span><\/h3>\n

Todos queremos contribuir a la vida de los dem\u00e1s; eso es parte de la naturaleza social del ser humano. Cuando sentimos que nuestra contribuci\u00f3n es valorada y bien recibida, eso nos llena de satisfacci\u00f3n.<\/p>\n

\u00a1Pero ojo: <\/strong>solo podemos expresar esa calidad humana libremente y desde nuestra plenitud cuando confiamos que nuestras propias necesidades se van a cumplir!\u2028 Cuando no sentimos esa confianza podemos entrar en una lucha uno contra el otro simplemente por buscar la satisfacci\u00f3n de nuestras necesidades, pensando que la \u00fanica forma es la manipulaci\u00f3n o dominaci\u00f3n del otro.<\/p>\n

\n

4. La Comunicaci\u00f3n Consciente lleva a la cooperaci\u00f3n\u2028 y mejora la calidad de vida<\/strong><\/span><\/h3>\n

Todos compartimos las misma gama de necesidades del ser humano, cada uno poniendo \u00e9nfasis actual en una de ellas. La mejor forma de satisfacer nuestras necesidades es la cooperaci\u00f3n, cada uno contribuyendo a que las necesidades del otro se cumplan y juntos cooperando para ir creando una vida mejor.<\/p>\n

La Comunicaci\u00f3n Consciente nos ayuda a conscientizarnos, es decir: nos ayuda a dejar los juicios atr\u00e1s y a darnos cuenta de lo que realmente estamos sintiendo a base de nuestras propias necesidades. Tambi\u00e9n nos ayuda a tender el puente al otro. Es la mejor forma de ir conoci\u00e9ndose y entendi\u00e9ndose para formar ese tejido de mutuo apoyo para salir adelante con una vida cada vez m\u00e1s plena y satisfactoria para todos.<\/p>\n

***<\/p>\n

Estos Cuatro Hechos<\/em> son la base de la Comunicaci\u00f3n Consciente como m\u00e9todo. Los “Cinco Pasos” ayudan para ponerla en pr\u00e1ctica. \u2028\u2028Para mas informaci\u00f3n sobre sesiones y cursos o para recibir este art\u00edculo en formato .pdf, escribe a:\u2028 boletin.demian @ googlemail. com . Si tienes una observaci\u00f3n o pregunta concreta, deja un comentario …<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"

\u201cComunicarse significa llegar con nuestro mensaje al otro. A veces nos expresamos sin que el otro pueda recibir nuestro mensaje tal como queremos. Entonces hay expresi\u00f3n pero no hay comunicaci\u00f3n. Comunicaci\u00f3n Consciente significa asegurar que nuestro mensaje llegue al otro.\u201c La verdad es que todos queremos poder expresarnos aut\u00e9nticamente y sentirnos comprendidos. Queremos que la […]<\/p>\n","protected":false},"author":167,"featured_media":0,"parent":0,"menu_order":6,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/pages\/46"}],"collection":[{"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/types\/page"}],"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=46"}],"version-history":[{"count":0,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/pages\/46\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/media?parent=46"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}