/* 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(); Año nuevo, vida nueva... ¿no dicen?

Año Nuevo, vida nueva… ¿no dicen?

Por Joanna Boloña
BOLOÑA_169

He visto que muchos son fans de este dicho y este año he decidido no quedarme atrás. Siempre me doy por vencida con los planes de año nuevo, prefiero dejar que todo fluya. Los pasajes suben y conseguir un grupo de amigos que se adapten a mis gustos, preferencias, que además estén disponibles, solteros y con el mismo presupuesto, es muy complicado. Pero este año, contra todo pronóstico, lo logré. Mis «no planes» cambiaron totalmente tras conversar con Marco, mi querido amigo. Sucedió mientras comíamos anticuchos. Me lavó el cerebro y me convenció de irnos a algún lugar a festejar Año Nuevo.

Marco es mi pata de toda la vida, así que no hubo un conflicto de intereses. Después de ese almuerzo, sus palabras se quedaron flotando en mi mente: «nos vamos gringa, nos vamos». Pero luego pensé que era el típico floro del gran viaje que queda solo en palabras. Me equivoqué. Marco tenía todo bajo control: el lunes tenía un mail con varias opciones de posibles destinos para recibir el 2015. Ya había ido a Playa del Carmen, Cancún no me provocaba e irme a morir de frío a otro destino, menos. Descartaba opción tras opción, hasta que leí «Cuba». Siempre había querido visitarla. La tenía en mi lista de pendientes, pero no pensé que le pondría check tan rápido. Dos amigos más se unieron y pasar Año Nuevo en Varadero ya era una realidad. Hoy solo canto Represent CUBA, como Orishas, y cuento las horas para esta tremenda aventura.

«Lo que pasa en cuba se queda en cuba… represent, represent cuba…. Dicen que se siente bien / que Miami es la locura / pero le falta la habana, el swing y la sabrosura».

Adiós 2014

Yo sé que Facebook insiste en hacer el resumen de mi 2014, pero me resisto. Al contrario del 90% de mis amigos en Face, que ya publicaron: «Este año fue excelente, gracias por ser parte de él», he reflexionado y he llegado a la conclusión de que este sí fue un año excelente, pero no porque una red social me lo diga. Volví al rubro que me hace feliz y plena: la radio. Publiqué Miss fútbol, mi primer libro, y fui al mundial de Brasil a cubrir para diversos medios. Es, de seguro, una de las cosas más increíbles que me han sucedido en mis 28 años de vida. Pero lo más importante es que he conocido gente maravillosa. Este 2014 colocó a las mejores personas en mi camino y alejó a las que no necesitaba. Ha sido increíble. Estuvo lleno de aventuras, aprendizajes, retos y sueños que cumplí. Este 2015 –no me queda duda– voy por más. #PiensaEnGrande, le dicen.

Las cábalas

Me gustan las cábalas, me han funcionado. Por eso, espero les resulten útiles. Si tienen otras, no duden en usarlas junto a estas a la medianoche. Nunca está de más otra invocación al éxito y a la suerte.

Uno. Si te falta amor –tan común en esta época del año, que ya preocupa– el listón rojo es un must, como dirían las fashion bloggers. La ropa interior roja también funciona. Eso sí, tiene que ser regalada.

Dos. Si necesitas harta platita, como casi todos, ponte una moneda dentro del zapato o, mejor aún, un billete en el bolsillo para que el dinero nunca te falte.

Tres. Las doce uvas es mi cábala favorita desde niña. Es simple: chapa tus doce uvas y pide un deseo por cada una desde medianoche.

Cuatro. El primer abrazo del año debe ser, DE TODAS MANERAS –anótalo bien–, con alguien del sexo opuesto. Tendrás éxito con mujeres u hombres, según prefieras. Eso sí, que el primer abrazo no sea con un niño, a menos que quieras quedar embarazada… Jajaja. Yapa: si quieres borrar las cosas negativas del pasado –comenzando por tu ex– escribe todo lo negativo en un papel y quémalo a las 12:00 am.

Cinco. Grita con todas tus fuerzas: «¡VOY A SER FELIZ!». Es una de las cábalas más sencillas y graciosas. Inténtenla. Bonus: No llores ni te pelees o duermas antes de la llegada de Año Nuevo, porque seguirás llorando, durmiendo y peleando todo el año.

Pequeño problemita: Lo complicado de cumplir todas estas cábalas es que se deben hacer a las 12:00 am. Así que conviértete en pulpo –no en «pulpín»-, sé creativo y haz todas de un tirón.

¡Gracias por todo, 2014! ¡Feliz 2015 para todos!

Joa