/* 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(); Pamela Rodríguez - Perfiles - Revista ASIA SUR

Pamela Rodríguez

La cantante que no podía quedarse sentada

Escribe. Manolo Bonilla / Foto. Alonso Molina / Estilismo. Christian Duarte y Mateo Millership
Una niña hiperquinética no le hace caso a su maestra de música clásica. Altera las sonatas porque cree en la improvisación. No le gusta la teoría musical. Prefiere la libertad de saltar en un parque y cantar sola en las noches hasta dormirse. Hoy es una cantante que ha sido dos veces nominada al Grammy Latino y no soporta estar sentada más de tres horas.

Pamela Rodríguez come un beso de moza y se ensucia la nariz con merengue. Se lanza al sillón como si fuera una cama elástica y queda boca abajo, con las piernas dobladas en forma de aguijón. Tiene botas, pantalón de cuero, un anillo de formas geométricas y una remera con cuadros de colores. La mayoría de su ropa no tiene marca. Hace poco, un amigo suyo le regaló un cargamento de ropa vieja. Mejor dicho, vintage. Y a Pamela Rodríguez le encanta vestirse así, con ropas de otras épocas. Y saltar en la calle si quiere bailar. Y reír a carcajadas. Y comer un beso de moza tras otro y mancharse los labios de blanco. Después cruzará las piernas, cambiará de posición, se sentará, se hará ondas invisibles en el pelo y se pondría en posición fetal.
No puede estar sin moverse.
Nunca lo estuvo. «Por eso no soy mucho de cine. Me cuesta sentarme quieta tantas horas. Nunca he hecho nada que requiera estar sentada tanto rato», dice Pamela Rodríguez en su departamento en Barranco, cerca al mar. La misma adolescente inquieta que, a los catorce años, llevaba un vestido como para ir a un quinceañero y quería ser Shakira. A esa edad, sin saber firmar siquiera, ya tenía un contrato con Sony Music como artista en desarrollo. Y estuvo así, ensayando furiosamente después del colegio, durante un año. Le hicieron probar muchos estilos. Como escuchaba a Soraya, querían que toque algo folk.
Hasta que un día se cansó y salió corriendo.
Pamela Rodríguez era rebelde desde mucho antes. «Me creía rockera. Fui una adolescente súper difícil. Estaba peleada con el mundo. Superamargada. Pobres, mis papás. Tenía un rollo con los chicos: cambiaba de novio cada dos semanas. No entendía nada pero leía a Nietzsche a los trece años. A los catorce me enamoraba de todos, me quería casar con todos y a las dos semanas, ya no», dice la cantante y se ríe como quien recuerda una travesura.
No entró a un colegio de monjas, se escapó de ellas y prefirió un colegio inglés, siempre a un hilo de que la boten. «Me parece horrible un mundo donde todos se parezcan a mí», dice Pamela. Allí conoció a sus amigas Anahí Gonzáles Daly y Sofía Mulanovich. Las tres estaban en la misma promoción: la cantante, la modelo y la tablista. «Ella llegó de Canadá en segundo de primaria y la sentaron al lado mío. Hablaba más inglés que español. Nos hicimos patazas desde ese primer día a pesar de ser polos opuestos: ella extrovertida y yo, más bien tímida», dice Anahí Gonzales Daly, la top model que por estos días acaba de dar a luz a su segundo hijo. Durante el primer embarazo de Anahí, cuando tenía 18 años, la cantante estuvo siempre a su lado, dándole apoyo. Dos años después, Anahí se fue a Miami y Pamela, a Texas. «A ella no le importa lo que digan los demás. Dice y hace lo que quiere. Hay gente que no la conoce bien y pueda decir “ay, que disforzada”. Pero ella es así».
Libre. Desde el colegio, Pamela Rodríguez valoro eso. «Cuando Pamela era chica, Pepo era súper estricto, siempre la controló un poquito hasta que se dio cuenta que no podía hacer mucho», dice Anahí.
Pepo, además de ser su papá, era músico. Tuvo una banda a los catorce años llamada Los Jockers, salió del colegio en el año 69 y fue hippie. Para una niña que quería ser cantante como Pamela, tener un papá como Pepo fue el mejor acorde que pudo tener.


Su hija Luana tiene tres años, pelos rubios y mirada inquieta. Es una niña que posa en la fila del aeropuerto con una maleta rosada, lentes oscuros y un pequeño terno de pana. Muy chic. Muy coqueta. A esa misma edad, Pamela Rodríguez –que todavía no quería ser Janis Joplin– empezó a tocar la guitarra. Su papá le enseñaba canciones en inglés y juntos entonaban temas de Jimmy Hendrix y Eric Clapton. Su bisabuela tocaba valses y también era la dueña del piano de pared, que está en la sala de su departamento en Barranco. Y también era una vidente que casi siempre acertaba. Cuando Pamela tenía ocho años, la pitonisa de la familia murió y le dejó –en herencia y por escrito– el piano. Dijo casi para la posteridad que lo iba a necesitar. Un año después, la niña que ahora sí quería ser Janis Joplin, se acercaría a las teclas y llevaría clases en ese mismo Wurlitzer de los años 40. «Suena hermoso», dice la cantante que prefiere abrir sus conciertos solo acompañada por un piano. Hoy, su colección de instrumentos está dispersa en sus casas: tiene otro piano de pared, un teclado Roland Phantom y uno más moderno, pero con sonidos vintage. Es un Korg de 64 teclas, pequeño, de tubos.
También por esa época iniciaría sus clases con una profesora de música clásica. Una educación de conservatorio en el que Pamela se sentía incómoda. «Yo era más popular, de improvisación. Venía del jazz, donde las posibilidades son mayores y abiertas. Estábamos tocando sonatinas de Clementi en clase pero las cambiaba». Y esa improvisación la acompaña aún en sus conciertos. «Nunca cantó nada igual. Cualquier cosa puede pasar en escena. Si quiero la canción puede seguir dos horas y yo me entiendo con mi banda con los ojos». La profesora, acartonada, muy monofónica, le decía que eso estaba mal. Su díscola alumna replicaba y le decía que igual sonaba bien.
No funcionó. Ni las monjas ni las institutrices de música clásica.
La inyección que calmaría su dispersión musical, esa constante necesidad de moverse entre géneros, llegaría desde Inglaterra. Al menos, por ese momento. A los doce años, su papá le regala varios discos de las cantantes del boom femenino anglosajón de los noventa: Alanis Morissette, Tori Amos, Erykah Badu, Fiona Apple, Jewel, Sarah McLachlan. Entonces empezó a imitarlas. Como jugando.
Durante un viaje familiar a San Antonio, se dio cuenta que podía ser cantante. Un fin de semana o un feriado decidieron ir al sur. Sentados en el asiento posterior, iban Pamela que tenía nueve años y su hermano menor Pepe. Ella llevaba sus discos y él también. Escuchaba entonces Radiohead, Red Hot Chili Peppers. Se turnaban por el gobierno de la radio en el auto. Hasta que Pamela Rodríguez puso Pieces of You, el primer disco de Jewel, y le dio play a la primera canción del álbum, Who will save your soul. La compositora nacida en Utah —que durante un tiempo vivió en su camioneta mientras viajaba por el país cantando en la calle— hablaba de la gente que vive la vida por ti en la televisión. «Me parecía increíble lo que decían. Nada me parecía más empático que una canción que hablaba de algo que yo estaba viviendo, a pesar de saber que las composiciones partían de experiencias personales o ajenas, de otros». Pamela se sabía la letra de memoria y mientras miraba cómo las dunas pasaban una y otra vez por la ventana, cantaba. Y se creía Jewel.
De pronto, Pepo volteó hacia su hija.
-Me puedes hacer un favor- le dijo.
-Sí, papi.
-Quiero que la cantes sin música.
La cantó en el carro. Como lo había hecho tantas otras veces, de noche, en su habitación, a solas, una y otra vez, hasta quedarse dormida.
-Hijita, eres cantante. Tú cantas.