/* 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(); Ella baila sola: Verónica Garrido Lecca

Ella baila sola: Verónica Garrido Lecca

Por Rodrigo Alomía
Con 25 años es una destacada bailarina clásica y contemporánea del elenco del Ballet Nacional y de la compañía de danza contemporánea Dactilares. Quiere contribuir y trabajar para que la vida cultural de Lima aumente.

Su madre fue su primera gran maestra de ballet y desde niña creció bajo la formación de ella. Pero lo cierto es que Verónica no supo que quería pasar su vida bailando sino hasta los dieciséis años, cuando comenzó a estudiar Administración en la universidad al mismo tiempo que entró al Ballet Municipal. La disciplina fue fundamental y con ello asomó la pasión por lo que hacía. Hoy, divide sus días entre la danza y los proyectos que tiene a cargo como gestora cultural.

¿Cuán sacrificada es la vida de una bailarina?
La disciplina es fundamental. Yo empecé un poco más tarde a diferencia de amigas que han entrenado desde los cincos años todos los días, pero igual fue sacrificado. Siempre hay que estar en forma y descansada, los fines de semana no me voy de fiesta, pero lo cierto es que me encanta el estilo de vida que llevo.

¿Cuál es el fin de semana perfecto?
Cuando en verano todo el mundo se va al sur y Lima se vacía. La ciudad queda espectacular [risas]. Me despierto para hacer deporte, desayunar y caminar bastante. El fin de semana pasado descubrí un cafecito con una vista increíble en el Malecón Cisneros.

Estudiaste Administración en la Universidad Pacífico, ¿nunca pensaste seguir una carrera en danza contemporánea?
Cuando la facultad de danza de la PUCP se abrió, yo ya estaba bailando, pero de hecho hubiera sido perfecto si se hubiera inaugurado hace seis o siete años. He ido ahí a tomar talleres con personas talentosas del extranjero, pero siento que mi maestría en danza es la experiencia que estoy teniendo en el Ballet Nacional y Dactilares.

¿Te quita el sueño bailar en el extranjero?
No, porque me siento bastante comprometida trabajando en el Perú. Me quita más el sueño estudiar en algún momento afuera, sobre todo maestrías en gestión cultural o en educación en la danza. Pero ahora hay demasiado por hacer en el país.

Luego de seguir un diplomado en Gestión Cultural, ¿qué proyectos has desarrollado?
El primero es un concurso que va a integrar todas las danzas del Perú en un solo campeonato en junio, y que contará con jurado del extranjero. Luego, estoy trayendo a un jurado del Joffrey Ballet School, una de las diez mejores escuelas de danza de Estados Unidos, para hacer audiciones en Lima. Y en paralelo asesoró a Ando Danzando, una ONG hermosa de maestras voluntarias que dictan clases de ballet en colegios públicos de Lima.

En el plano cultural, ¿falta mucho que hacer en Lima?
Las personas hablan mucho de que la cultura se está desarrollando, que hay un boom del teatro y mucho más… pero esto solo ocurre en tres distritos de la ciudad. Eso no es significativo. Me encantaría ver diez compañías de ballet, diez más de danza contemporánea, consultoras culturales…

¿En qué momento de tu vida afloró este interés?
Cuando era adolescente y estaba en mis primeros años de la universidad. Mi compromiso es desarrollar la cultura, que haya más oportunidades y ofertas para que la gente conozca más. Son mis motivaciones diarias.

Su madre fue su primera gran maestra de ballet y desde niña creció bajo la formación de ella. Pero lo cierto es que Verónica no supo que quería pasar su vida bailando sino hasta los dieciséis años, cuando comenzó a estudiar Administración en la universidad al mismo tiempo que entró al Ballet Municipal. La disciplina fue fundamental y con ello asomó la pasión por lo que hacía. Hoy, divide sus días entre la danza y los proyectos que tiene a cargo como gestora cultural.

¿Cuán sacrificada es la vida de una bailarina?
La disciplina es fundamental. Yo empecé un poco más tarde a diferencia de amigas que han entrenado desde los cincos años todos los días, pero igual fue sacrificado. Siempre hay que estar en forma y descansada, los fines de semana no me voy de fiesta, pero lo cierto es que me encanta el estilo de vida que llevo.

¿Cuál es el fin de semana perfecto?
Cuando en verano todo el mundo se va al sur y Lima se vacía. La ciudad queda espectacular [risas]. Me despierto para hacer deporte, desayunar y caminar bastante. El fin de semana pasado descubrí un cafecito con una vista increíble en el Malecón Cisneros.

Estudiaste Administración en la Universidad Pacífico, ¿nunca pensaste seguir una carrera en danza contemporánea?
Cuando la facultad de danza de la PUCP se abrió, yo ya estaba bailando, pero de hecho hubiera sido perfecto si se hubiera inaugurado hace seis o siete años. He ido ahí a tomar talleres con personas talentosas del extranjero, pero siento que mi maestría en danza es la experiencia que estoy teniendo en el Ballet Nacional y Dactilares.

¿Te quita el sueño bailar en el extranjero?
No, porque me siento bastante comprometida trabajando en el Perú. Me quita más el sueño estudiar en algún momento afuera, sobre todo maestrías en gestión cultural o en educación en la danza. Pero ahora hay demasiado por hacer en el país.

Luego de seguir un diplomado en Gestión Cultural, ¿qué proyectos has desarrollado?
El primero es un concurso que va a integrar todas las danzas del Perú en un solo campeonato en junio, y que contará con jurado del extranjero. Luego, estoy trayendo a un jurado del Joffrey Ballet School, una de las diez mejores escuelas de danza de Estados Unidos, para hacer audiciones en Lima. Y en paralelo asesoró a Ando Danzando, una ONG hermosa de maestras voluntarias que dictan clases de ballet en colegios públicos de Lima.

En el plano cultural, ¿falta mucho que hacer en Lima?
Las personas hablan mucho de que la cultura se está desarrollando, que hay un boom del teatro y mucho más… pero esto solo ocurre en tres distritos de la ciudad. Eso no es significativo. Me encantaría ver diez compañías de ballet, diez más de danza contemporánea, consultoras culturales…

¿En qué momento de tu vida afloró este interés?
Cuando era adolescente y estaba en mis primeros años de la universidad. Mi compromiso es desarrollar la cultura, que haya más oportunidades y ofertas para que la gente conozca más. Son mis motivaciones diarias.

Fotografía: Augusto Escribens
Producción: Pia Gonzales-Vigil
Dirección de Arte y Styling: Ursula Castrat
Maquillaje y peinado: Agar García, Soraida / TRESCUARENTA
Agradeciemientos: Intimoda, Noe Bernacelli, LFC, Claudia Jimenez, Nine West