/* 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(); Vania Masías - Perfiles - Revista ASIA SUR

Vania Masías

La filosofía del movimiento

Escribe. Manolo Bonilla // Una coreografía de Miranda & Arrué
Hay emociones que te mueven. El final de la vida es la ausencia de movimiento. Vania Masías no ha dejado de moverse desde que aprendió a bailar. ¿La danza puede ser una forma de no morir?

Ámbar. Todo empezó en un semáforo en la plaza Grau, en Lima. Los ángeles hacían piruetas en el pavimento. Ámbar. Ella los veía resguardada tras el vidrio de un carro. Había regresado de Irlanda. Ámbar. Ahora se paraban de cabeza, como cuando ensayaban en la arena. Y antes de que se reanudara el tráfico extendían la mano por monedas. Verde. El carro avanzó pero la mirada de la mujer se quedó con ellos. Dando vueltas.

¿Qué hacer?

Así empezó todo.

VANIA

Podemos decir que la filosofía de Vania Masías es un evangelio musical. Y que los bailarines son sus apóstoles. Durante los ochenta, en Río de Janeiro el baile funk era la expresión de autonomía en las favelas cariocas. Aquí, en la periferia de la capital, los ritmos urbanos cubren ese vacío. El baile es su manifestación. «Nosotros valoramos el movimiento porque nos permite leer a personas que no usan la palabra, sino que se mueven para expresar una emoción», dice Masías, la bailarina que encontró el ballet a los tres años.

Y siguió ensayando con fruición. Perfeccionista. Terminaba las clases en el colegio para mujeres más caro de Lima y se iba a entrenar.

No socializaba mucho en las aulas.

A los diez años, convivió durante dos meses con una familia cubana en La Habana. Era un caserón donde vivían otras cinco familias que comían frejoles todos los días. Había ido al Cuballet, un curso anual que se abría en verano, junto con una delegación del Ballet Municipal.

«Esos viajes te abren el cerebro».

Y sí que se abrió.

Si empezabas con ballet o danza contemporánea, no ibas a conseguir nada, Vania. Ellos eligieron un lenguaje callejero, de espontaneidad y libertad. Se sentían cómodos. Entonces, tenías que ser fuerte. Tu anzuelo era ser cool. Un pandillero que porta una pistola es cool. Pero, ahora, un joven que se para de cabeza o hace un doble mortal también puede ser cool. Necesitabas buscar modelos que les hablen desde la calle. Que un chico de su mismo barrio, que la está haciendo, les diga eso, entonces sí lo escucharán. «¿Qué me vienes a hablar tú? Tú, que has tenido todo: cama, agua, luz, educación de primera» Claro. No un Reimond Manco, un futbolista que alcanzó la fama siendo muy ingenuo: Y cayó con la misma celeridad con la que ascendió.

Necesitabas modelos, pero positivos.

Como tu papá. Al que recordabas cuando viajabas a Boston dos veces al año para ensayar. Y tenías solo doce años. Allá, sí, viste a otras chicas, mayores que tú, meterse LSD, hablando de abortos. Y no se te ocurrió escoger ese camino. Ni cojuda, tú te querías. Y recordabas a tu papá: «Tú haces tu vida, tú decides».

—Mi papá es one self made. Miento, se ha hecho gracias a las personas que han trabajado con él. Es criollazo, para nada teórico, alucina que en sus cuadernos Loro lleva su flujo de caja. Cultiva mandarina, palta y huevos que exporta. Trabajó desde los dieciséis como peón y, nueve años después, ya tenía tierras. Pero la Reforma Agraria le quitó lo que tenía. Entonces invadió los cerros de Chincha. Allí cultivó y puso granjas. En época de Sendero, tenía metralleta y granadas para defenderse. Vivimos en Chincha y mataron a todos menos a mi viejo porque su gente lo cuidaba. No era un patrón feudal.

Vania Masías nunca vio la indiferencia en casa.