. */ # 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":125,"date":"2009-09-11T14:48:10","date_gmt":"2009-09-11T14:48:10","guid":{"rendered":"http:\/\/alegriaprofunda.wordpress.com\/?p=125"},"modified":"2010-09-09T23:15:30","modified_gmt":"2010-09-09T23:15:30","slug":"identifique-una-conclusion-negativa-%c2%bfy-ahora-que-boletin-5","status":"publish","type":"post","link":"https:\/\/www.elcrecimientopersonal.com\/identifique-una-conclusion-negativa-%c2%bfy-ahora-que-boletin-5\/","title":{"rendered":"Identifiqu\u00e9 una conclusi\u00f3n negativa, \u00bfY ahora qu\u00e9? (Bolet\u00edn 5)"},"content":{"rendered":"

Hola:<\/p>\n

Te cuento que mi tiempo en Alemania estuvo lleno de regalos maravillosos y fuertes desaf\u00edos, un tiempo de vida intensa. Ahora ya estoy de vuelta en el Ecuador,\u00a0gozando\u00a0de esa luz especial que suele venir con el verano, y con muchas ganas de vivir tan plenamente como pueda …<\/p>\n

Muchas gracias por las respuestas y preguntas que me han llegado despu\u00e9s de mi \u00faltimo mensaje. Parece que el tema de “c\u00f3mo tratar con la frustraci\u00f3n de forma positiva” <\/em>sigue interesante. Desde que empec\u00e9 hablar de eso en el bolet\u00edn “Cuando los desaf\u00edos aumentan” he recibido muchos comentarios y preguntas al respecto.<\/p>\n

Tambi\u00e9n el tema de la comunicaci\u00f3n y c\u00f3mo evitar conflictos in\u00fatiles sigue vigente. Pero para no cargar este bolet\u00edn demasiado dejo ese tema para el pr\u00f3ximo bolet\u00edn, que esta vez no va tardar mucho.<\/p>\n

Tal vez recuerdas que en el\u00a0\u00faltimo\u00a0mail hab\u00eda dicho que las frustraciones\u00a0se complican y agravan cuando en vez de sentirlas como sentimiento y procesarlas directamente sacamos conclusiones\u00a0negativas sobre nuestro entorno\u00a0o peor, sobre nosotros mismos.<\/p>\n

\n

Por eso recomendaba un ejercicio para poder detectar si hab\u00eda tales conclusiones fatales. Despu\u00e9s alguien me envi\u00f3 la pregunta:<\/p>\n

Identifiqu\u00e9 una conclusi\u00f3n negativa, \u00bfY ahora que hago?<\/h3>\n

Muy buena pregunta. Mi respuesta tiene dos aspectos.<\/p>\n

Primero:\u00a0Ya el hecho que indentifiques conscientemente una conclusi\u00f3n negativa que tu mente ha sacado es bueno porque te da lugar de observarla, de tomar algo de distancia y -no tomarla tan en serio. Nuestra mente siempre saca conclusiones y siempre son solo una forma de ver la realidad. Felizmente la realidad es demasiada compleja y movida para preocuparse por nuestras conclusiones. Recordar eso nos ayuda a tener una\u00a0actitud\u00a0mas relajada y soberana ante nuestra mente\u00a0y ya nos da mas espacio de movernos. Adem\u00e1s te puedes ayudar pregunt\u00e1ndote desde el coraz\u00f3n si realmente puedes saber con total certeza que si es as\u00ed como tu mente dice.<\/p>\n

El segundo aspecto es algo mas complejo. Si nos damos cuenta que nuestra mente a menudo saca conclusiones negativas que suelen limitarnos entonces, surge la pregunta: \u00bfComo puedo cambiar mi forma de pensar? Lo mas conocido para\u00a0eso es el \u201cPensamiento Positivo”: tratar de substituir los pensamientos\u00a0negativos directamente por pensamientos positivos, por ejemplo a trav\u00e9s de \u201cAfirmaciones\u201c u otros m\u00e9todos.\u00a0Yo no recomiendo eso para nada.<\/p>\n

A lo largo, el “Pensamiento Positivo\u201c solo lleva a una represi\u00f3n mas sofisticada de ciertas partes de nuestra mente. Eso es fatal porque para poder usar nuestra mente bien necesitamos pleno acceso a todas las partes de ella. (Si quieres te mando un art\u00edculo\u00a0sobre el Pensamiento Positivo).<\/p>\n

Lo que yo m\u00e1s bien recomiendo\u00a0es lo que llamo el “Pensamiento Aplicado”<\/em><\/strong>. Tambi\u00e9n te facilita\u00a0a cambiar estructuras viejas de tu mente, pero no lleva a la represi\u00f3n. Yo ense\u00f1o eso en mi programa modular de “Exito y Plenitud”, donde trabajamos todos los temas que tienen que ver con deseos y los tres aspectos de realizar metas. Los ejercicios del “Pensamiento Aplicado” tambi\u00e9n son parte del trabajo con el “Tema B\u00e1sico”. Ah\u00ed trabajamos con nuestras limitaciones mas profundas. El Tema B\u00e1sico se forma a trav\u00e9s de Conclusiones inconscientes\u00a0sobre nosotros mismos como:\u00a0“Yo soy insuficiente”, “Yo no soy bienvenido”,\u00a0“Yo no soy importante”,\u00a0“Yo soy culpable”.<\/p>\n

Esas limitaciones son tan fundamentales porque son definiciones destructivas de nuestro Ser. (Yo soy ….) Niegan nuestro derecho existencial de ser amados tal como somos y ser felices. Muchas veces gran parte de nuestra personalidad se forma en torno a una de esas “auto-definici\u00f3nes negativas”, por un lado manifest\u00e1ndola en nuestra vida, por otro lado tratando de compensarla compulsivamente.<\/p>\n

Hay mucho m\u00e1s de decir sobre el trabajo con el Tema B\u00e1sico pero lamentablemente no calza bien en un bolet\u00edn. Por ahora lo tengo que dejar ah\u00ed.<\/p>\n

Te deseo mucho amor, apoyo y \u00e9xito con lo que quieres realizar en tu vida. Ser\u00e1 un gusto para mi atender tus preguntas, no dudes en escribirme. Si tienes inter\u00e9s en\u00a0el trabajo pr\u00e1ctico con estos temas en sesiones individuales, ll\u00e1mame al 2376019 o escr\u00edbeme un mail.<\/p>\n

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

Hola: Te cuento que mi tiempo en Alemania estuvo lleno de regalos maravillosos y fuertes desaf\u00edos, un tiempo de vida intensa. Ahora ya estoy de vuelta en el Ecuador,\u00a0gozando\u00a0de esa luz especial que suele venir con el verano, y con muchas ganas de vivir tan plenamente como pueda … Muchas gracias por las respuestas y […]<\/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,29],"_links":{"self":[{"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/posts\/125"}],"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=125"}],"version-history":[{"count":1,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/posts\/125\/revisions"}],"predecessor-version":[{"id":580,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/posts\/125\/revisions\/580"}],"wp:attachment":[{"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/media?parent=125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/categories?post=125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.elcrecimientopersonal.com\/wp-json\/wp\/v2\/tags?post=125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}