/* Plugin Name: RSS Validator Plugin URI: http://andrewnorcross.com/plugins/ Description: Checks your RSS feed against the W3 RSS validator for errors Version: 1.1 Author: Andrew Norcross Author URI: http://andrewnorcross.com Copyright 2012 Andrew Norcross This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 2, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ // http://feed2.w3.org/docs/soap.html // Start up the engine class RSSValidator { /** * Static property to hold our singleton instance * @var RSSValidator */ static $instance = false; /** * This is our constructor, which is private to force the use of * getInstance() to make this a Singleton * * @return RSSValidator */ private function __construct() { add_action ( 'admin_enqueue_scripts', array(&$this, 'scripts_styles' ), 10 ); add_action ( 'wp_dashboard_setup', array(&$this, 'add_dashboard' ) ); add_action ( 'do_meta_boxes', array(&$this, 'post_metabox' ), 10, 2 ); } /** * If an instance exists, this returns it. If not, it creates one and * retuns it. * * @return RSSValidator */ public static function getInstance() { if ( !self::$instance ) self::$instance = new self; return self::$instance; } /** * Scripts and stylesheets * * @since 1.0 */ public function scripts_styles($hook) { // for post editor if ( $hook == 'post-new.php' || $hook == 'post.php' ) : wp_enqueue_style( 'validator-style', plugins_url('/lib/css/rss-validator.css', __FILE__), array(), null, 'all' ); wp_enqueue_script( 'validator-init', plugins_url('/lib/js/validator.init.js', __FILE__) , array('jquery'), null, true ); endif; // for dashboard $current_screen = get_current_screen(); if ( 'dashboard' == $current_screen->base ) : wp_enqueue_style( 'validator-style', plugins_url('/lib/css/rss-validator.css', __FILE__), array(), null, 'all' ); wp_enqueue_script( 'validator-init', plugins_url('/lib/js/validator.init.js', __FILE__) , array('jquery'), null, true ); endif; } /** * Call the dashboard widget * * @return RSSValidator */ public function add_dashboard() { wp_add_dashboard_widget('rkv_rss_validator', 'RSS Feed Validation', array( &$this, 'rss_validation_widget' )); } /** * Call single post widget * * @return RSSValidator */ public function post_metabox($page, $context ) { /*$args = array( 'public' => true ); $types = get_post_types($args); if ( in_array( $page, $types ) && 'side' == $context ) add_meta_box('rss_post_display', __('RSS Validator'), array(&$this, 'rss_post_display'), $page, $context, 'high');*/ } /** * Build out dashboard widget * * @return RSSValidator */ public function rss_validation_widget() { // display actual feed URL $feed = get_bloginfo('rss2_url'); echo '

Your main RSS feed: '.$feed.'

'; // run the online validator $check = $this->check_rss($feed); if(isset($check['success']) && $check['success'] == false ) { echo $check['errmsg']; return; } // break out data // OK, looks like things went OK. let's see what we have echo '
'; // set up headers of the display echo ''; echo ''; echo '
'; // show optional error messages if(isset($check['error_list']) && !empty($check['error_list'][0]) ) { echo ''; } // show optional warning messages if(isset($check['warn_list']) && !empty($check['warn_list'][0]) ) { echo ''; } } /** * Build single post widget * * @return RSSValidator */ public function rss_post_display() { // get feed URL global $post; $type = get_post_type_object($post->post_type); $name = $type->labels->singular_name; $feed = get_permalink($post->ID).'feed/'; echo '

This '.$name.' RSS feed
'.$feed.'

'; // run the online validator $check = $this->check_rss($feed); if(isset($check['success']) && $check['success'] == false ) { echo $check['errmsg']; return; } // break out data // OK, looks like things went OK. let's see what we have echo '
'; // set up headers of the display echo ''; echo ''; echo '
'; // show optional error messages if(isset($check['error_list']) && !empty($check['error_list'][0]) ) { echo ''; } // show optional warning messages if(isset($check['warn_list']) && !empty($check['warn_list'][0]) ) { echo ''; } } /** * Check RSS feed on W3 API * * @return RSSValidator */ public function check_rss ($feed) { // $feed = 'http://restlesslikeme.com/feed/'; $request = new WP_Http; $url = 'http://validator.w3.org/feed/check.cgi?url='.urlencode($feed).'&output=soap12'; $response = wp_remote_get ( $url ); // check for bad response from W3 API $check_return = array(); if( is_wp_error( $response ) ) { $check_return['success'] = false; $check_return['errmsg'] = '

Sorry, there was an error with your request.

'; } if(!is_wp_error( $response ) ) { $feed_data = $response['body']; $return_xml = simplexml_load_string( (string) $feed_data ); $return_xml->registerXPathNamespace( 'm', 'http://www.w3.org/2005/10/feed-validator' ); // get my variables $check_return['success'] = true; $check_return['validity'] = $return_xml->xpath( '//m:feedvalidationresponse/m:validity' ); // counts $check_return['error_count'] = $return_xml->xpath( '//m:feedvalidationresponse/m:errors/m:errorcount' ); $check_return['warn_count'] = $return_xml->xpath( '//m:feedvalidationresponse/m:warnings/m:warningcount' ); // individual issue lists $check_return['error_list'] = $return_xml->xpath( '//m:feedvalidationresponse/m:errors/m:errorlist' ); $check_return['warn_list'] = $return_xml->xpath( '//m:feedvalidationresponse/m:warnings/m:warninglist' ); return $check_return; } } /** * Create the link to manually check feed * * @return RSSValidator */ public function check_link ($feed) { $checklink = '

See complete details on W3 Validator site

'; return $checklink; } /// end class } // Instantiate our class $RSSValidator = RSSValidator::getInstance(); El todista

El todista

Por Jesús Cuzcano
Ha sabido ganarse seguidores y detractores, ha sabido forjar una voz que, sin medias tintas, denuncia todo aquello que escapa de sus parámetros de la verdad. Phillip Butters, con el ácido estilo que lo caracteriza, se toma un tiempo para hablar de todo. Con ustedes, Butters, el todista.

IMG_4460 ret
El 2015 ha sido el punto de partida de muchos eventos que mantienen a los peruanos en constante ebullición: la incertidumbre por el destino de la selección de fútbol, la seguridad dentro y fuera de los estadios, la constante denuncia por la indecencia en la programación televisiva y las protestas juveniles que se gestaron por esa misma razón. En base a estos temas, la cuestión no es qué preguntarte a Phillip Butters, sino qué no preguntarle…

El Perú pasa por un momento de incertidumbre en cuanto a su selección de fútbol, ¿de qué se adolece?
No tenemos universo de jugadores. Por lo tanto, no puede haber una buena selección. Los chicos no tienen el nivel. Las selecciones de fútbol peruano van a un mundo que les es hostil, porque compiten con jugadores que tienen otra preparación, otra formación. La distancia que hay, por ejemplo, entre el fútbol peruano o el colombiano, o el ecuatoriano, ya es abismal.

Entonces, ¿No hay algo que rescates de la selección?
No. Nada.

¿La contratación de Ricardo Gareca como director técnico de la selección puede cambiar este escenario?
En la medida que sea parte de un plan a mediano plazo y venga a trabajar, sin buscar una clasificación, puede ser una buena idea. Es una persona seria, no debe influenciarse por la presión de los medios o la de los sponsors para vender una clasificación que no se va a dar. Él debe ser el técnico de una transición, de la restructuración del futbol peruano. Pero si viene a hacer lo mismo que otros, va a fracasar.
IMG_4667 RET
El inicio de este año ha dejado varias huellas. En las canchas, la primera fase de la Copa Libertadores sacó a relucir la falta de seguridad que puede existir en estadios como el Matute. Frente a los televisores, la ausencia de pudor en la programación fue el combustible que encendió los motores de futuras vociferaciones que tendrían como escenario principal las calles limeñas.

¿Cuál es la percepción que tienes de la seguridad ciudadana dentro y fuera de los estadios?
La seguridad ciudadana no solo depende de los estamentos del ministerio del interior, que es la policía, sino también del ministerio público [la fiscalía], y del poder judicial que da efectividad a las leyes. Soy de los considera que ya es hora de que los militares salgan a las calles. Y la gente se animaliza, se ‘bestifica’, cuando va a ‘ver’ el futbol. Ni siquiera le prestan atención. Lo ven de espaldas, porque este es el pretexto para la violencia. Eso tiene que ver con el Estado cumpla con su rol. ¿Para qué está la policía? ¿Dónde está el rigor de la ley?

En Brasil, el Sport Recife contrató a las madres de los barristas para que formaran parte de la seguridad de los partidos…
Esas son tonterías… En otros países, tú al policía no lo puedes insultar. Lo que cabe es que el policía te agarre, te voltee en el piso, te ponga el pie en la cara, si te rompe la nariz no pasa nada, te agarre a patadas y te meta ‘dentro’. En Argentina, Italia, hay que ser bien ‘hinchas’ para ponerse frente a un policía y mentarle la madre. ¡La tienen que recontra pensar! Porque te meten preso. Eso se llama el imperio de la ley, el que tiene el uso legítimo de la fuerza es el policía. Aquí no hay imperio de la ley…
IMG_4655 RET
Pasando el concepto de seguridad a otro plano, ¿qué opinas de la exposición que tienen los menores a la denominada ‘Tv basura’?
Yo soy de los comunicadores que pitea desde hace tiempo, y con bronca, por el respeto de horario de protección al menor. El que una mujer sea bonita no significa que se convierta en un objeto y en la tv está cosificada. Y si a un chiquillo de 12 años, le exacerbas la sensualidad todos los días durante 2 horas, este se va a tocar. La tv es basura porque da plata. Yo no soy cucufato. Esto es sentido común. Pero, ¿por qué el sentido común no obra con todos? Ya suficiente mier… hay en la sociedad, no la tires por televisión.

Es por ello que se han generado tantas protestas por parte de los jóvenes…
A mí me parece legítimo y loable que un joven proteste. Pero, eso sí, me gustaría tenerlos fuera de las protestas y preguntarles, ¿tú en qué trabajas? En la vida tú hablas de la experiencia, no de la teoría… Por otro lado, la ‘ley Pulpín’ [ley del régimen laboral juvenil] fue una ley hecha por teóricos. Porque si en el Perú hubiera empleo pleno, fiscalización laboral, de putamadre la ley ‘pulpín’. Pero no hay empleo pleno. Rescato el derecho de los chicos a oponerse, a protestar pacíficamente.



IMG_4625 ret
TIRO AL BLANCO
Ollanta Humala: “Bueno, estamos frente a un presidente que nunca debió llegar al puesto, porque no tiene las capacidades para serlo”.

Nadine Heredia: “Una chica simpática que sonríe bonito, pero que nunca ha trabajado; sin cultura política, es un invento”.

Susana Villarán: “Ella ha sido una persona tan incompetente, nula para las cosas públicas”.

Luis Castañeda: “Tiene conocimiento, capacidad de trabajo y experiencia, pero es una persona muy intolerable. Ese es parte de su problema”.