/** * A simple set of functions to check our version 1.0 update service. * * @package WordPress * @since 2.3.0 */ /** * Check WordPress version against the newest version. * * The WordPress version, PHP version, and Locale is sent. Checks against the * WordPress server at api.wordpress.org server. Will only check if WordPress * isn't installing. * * @since 2.3.0 * @uses $wp_version Used to check against the newest WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @param bool $force_check Whether to bypass the transient cache and force a fresh update check. Defaults to false, true if $extra_stats is set. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_version_check( $extra_stats = array(), $force_check = false ) { if ( defined('WP_INSTALLING') ) return; global $wpdb, $wp_local_package; include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $php_version = phpversion(); $current = get_site_transient( 'update_core' ); $translations = wp_get_installed_translations( 'core' ); // Invalidate the transient when $wp_version changes if ( is_object( $current ) && $wp_version != $current->version_checked ) $current = false; if ( ! is_object($current) ) { $current = new stdClass; $current->updates = array(); $current->version_checked = $wp_version; } if ( ! empty( $extra_stats ) ) $force_check = true; // Wait 60 seconds between multiple version check requests $timeout = 60; $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( ! $force_check && $time_not_changed ) return false; $locale = get_locale(); /** * Filter the locale requested for WordPress core translations. * * @since 2.8.0 * * @param string $locale Current locale. */ $locale = apply_filters( 'core_version_check_locale', $locale ); // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_core', $current ); if ( method_exists( $wpdb, 'db_version' ) ) $mysql_version = preg_replace('/[^0-9.].*/', '', $wpdb->db_version()); else $mysql_version = 'N/A'; if ( is_multisite() ) { $user_count = get_user_count(); $num_blogs = get_blog_count(); $wp_install = network_site_url(); $multisite_enabled = 1; } else { $user_count = count_users(); $user_count = $user_count['total_users']; $multisite_enabled = 0; $num_blogs = 1; $wp_install = home_url( '/' ); } $query = array( 'version' => $wp_version, 'php' => $php_version, 'locale' => $locale, 'mysql' => $mysql_version, 'local_package' => isset( $wp_local_package ) ? $wp_local_package : '', 'blogs' => $num_blogs, 'users' => $user_count, 'multisite_enabled' => $multisite_enabled, ); $post_body = array( 'translations' => json_encode( $translations ), ); if ( is_array( $extra_stats ) ) $post_body = array_merge( $post_body, $extra_stats ); $url = $http_url = 'http://api.wordpress.org/core/version-check/1.7/?' . http_build_query( $query, null, '&' ); if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $options = array( 'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3 ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ), 'headers' => array( 'wp_install' => $wp_install, 'wp_blog' => home_url( '/' ) ), 'body' => $post_body, ); $response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) return false; $body = trim( wp_remote_retrieve_body( $response ) ); $body = json_decode( $body, true ); if ( ! is_array( $body ) || ! isset( $body['offers'] ) ) return false; $offers = $body['offers']; foreach ( $offers as &$offer ) { foreach ( $offer as $offer_key => $value ) { if ( 'packages' == $offer_key ) $offer['packages'] = (object) array_intersect_key( array_map( 'esc_url', $offer['packages'] ), array_fill_keys( array( 'full', 'no_content', 'new_bundled', 'partial', 'rollback' ), '' ) ); elseif ( 'download' == $offer_key ) $offer['download'] = esc_url( $value ); else $offer[ $offer_key ] = esc_html( $value ); } $offer = (object) array_intersect_key( $offer, array_fill_keys( array( 'response', 'download', 'locale', 'packages', 'current', 'version', 'php_version', 'mysql_version', 'new_bundled', 'partial_version', 'notify_email', 'support_email' ), '' ) ); } $updates = new stdClass(); $updates->updates = $offers; $updates->last_checked = time(); $updates->version_checked = $wp_version; if ( isset( $body['translations'] ) ) $updates->translations = $body['translations']; set_site_transient( 'update_core', $updates ); if ( ! empty( $body['ttl'] ) ) { $ttl = (int) $body['ttl']; if ( $ttl && ( time() + $ttl < wp_next_scheduled( 'wp_version_check' ) ) ) { // Queue an event to re-run the update check in $ttl seconds. wp_schedule_single_event( time() + $ttl, 'wp_version_check' ); } } // Trigger a background updates check if running non-interactively, and we weren't called from the update handler. if ( defined( 'DOING_CRON' ) && DOING_CRON && ! doing_action( 'wp_maybe_auto_update' ) ) { do_action( 'wp_maybe_auto_update' ); } } /** * Check plugin versions against the latest versions hosted on WordPress.org. * * The WordPress version, PHP version, and Locale is sent along with a list of * all plugins installed. Checks against the WordPress server at * api.wordpress.org. Will only check if WordPress isn't installing. * * @since 2.3.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_plugins( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined('WP_INSTALLING') ) return false; // If running blog-side, bail unless we've not checked in the last 12 hours if ( !function_exists( 'get_plugins' ) ) require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $plugins = get_plugins(); $translations = wp_get_installed_translations( 'plugins' ); $active = get_option( 'active_plugins', array() ); $current = get_site_transient( 'update_plugins' ); if ( ! is_object($current) ) $current = new stdClass; $new_option = new stdClass; $new_option->last_checked = time(); // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-plugins.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $plugin_changed = false; foreach ( $plugins as $file => $p ) { $new_option->checked[ $file ] = $p['Version']; if ( !isset( $current->checked[ $file ] ) || strval($current->checked[ $file ]) !== strval($p['Version']) ) $plugin_changed = true; } if ( isset ( $current->response ) && is_array( $current->response ) ) { foreach ( $current->response as $plugin_file => $update_details ) { if ( ! isset($plugins[ $plugin_file ]) ) { $plugin_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $plugin_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_plugins', $current ); $to_send = compact( 'plugins', 'active' ); $locales = array( get_locale() ); /** * Filter the locales requested for plugin translations. * * @since 3.7.0 * * @param array $locales Plugin locale. Default is current locale of the site. */ $locales = apply_filters( 'plugins_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 plugins $timeout = 3 + (int) ( count( $plugins ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'plugins' => json_encode( $to_send ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), 'all' => json_encode( true ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); foreach ( $response['plugins'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); foreach ( $response['no_update'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); if ( is_array( $response ) ) { $new_option->response = $response['plugins']; $new_option->translations = $response['translations']; // TODO: Perhaps better to store no_update in a separate transient with an expiry? $new_option->no_update = $response['no_update']; } else { $new_option->response = array(); $new_option->translations = array(); $new_option->no_update = array(); } set_site_transient( 'update_plugins', $new_option ); } /** * Check theme versions against the latest versions hosted on WordPress.org. * * A list of all themes installed in sent to WP. Checks against the * WordPress server at api.wordpress.org. Will only check if WordPress isn't * installing. * * @since 2.7.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_themes( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined( 'WP_INSTALLING' ) ) return false; $installed_themes = wp_get_themes(); $translations = wp_get_installed_translations( 'themes' ); $last_update = get_site_transient( 'update_themes' ); if ( ! is_object($last_update) ) $last_update = new stdClass; $themes = $checked = $request = array(); // Put slug of current theme into request. $request['active'] = get_option( 'stylesheet' ); foreach ( $installed_themes as $theme ) { $checked[ $theme->get_stylesheet() ] = $theme->get('Version'); $themes[ $theme->get_stylesheet() ] = array( 'Name' => $theme->get('Name'), 'Title' => $theme->get('Name'), 'Version' => $theme->get('Version'), 'Author' => $theme->get('Author'), 'Author URI' => $theme->get('AuthorURI'), 'Template' => $theme->get_template(), 'Stylesheet' => $theme->get_stylesheet(), ); } // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-themes.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time() - $last_update->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $theme_changed = false; foreach ( $checked as $slug => $v ) { if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) ) $theme_changed = true; } if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) { foreach ( $last_update->response as $slug => $update_details ) { if ( ! isset($checked[ $slug ]) ) { $theme_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $theme_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $last_update->last_checked = time(); set_site_transient( 'update_themes', $last_update ); $request['themes'] = $themes; $locales = array( get_locale() ); /** * Filter the locales requested for theme translations. * * @since 3.7.0 * * @param array $locales Theme locale. Default is current locale of the site. */ $locales = apply_filters( 'themes_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 themes $timeout = 3 + (int) ( count( $themes ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'themes' => json_encode( $request ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $new_update = new stdClass; $new_update->last_checked = time(); $new_update->checked = $checked; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); if ( is_array( $response ) ) { $new_update->response = $response['themes']; $new_update->translations = $response['translations']; } set_site_transient( 'update_themes', $new_update ); } /** * Performs WordPress automatic background updates. * * @since 3.7.0 */ function wp_maybe_auto_update() { include_once( ABSPATH . '/wp-admin/includes/admin.php' ); include_once( ABSPATH . '/wp-admin/includes/class-wp-upgrader.php' ); $upgrader = new WP_Automatic_Updater; $upgrader->run(); } /** * Retrieves a list of all language updates available. * * @since 3.7.0 */ function wp_get_translation_updates() { $updates = array(); $transients = array( 'update_core' => 'core', 'update_plugins' => 'plugin', 'update_themes' => 'theme' ); foreach ( $transients as $transient => $type ) { $transient = get_site_transient( $transient ); if ( empty( $transient->translations ) ) continue; foreach ( $transient->translations as $translation ) { $updates[] = (object) $translation; } } return $updates; } /** * Collect counts and UI strings for available updates * * @since 3.3.0 * * @return array */ function wp_get_update_data() { $counts = array( 'plugins' => 0, 'themes' => 0, 'wordpress' => 0, 'translations' => 0 ); if ( $plugins = current_user_can( 'update_plugins' ) ) { $update_plugins = get_site_transient( 'update_plugins' ); if ( ! empty( $update_plugins->response ) ) $counts['plugins'] = count( $update_plugins->response ); } if ( $themes = current_user_can( 'update_themes' ) ) { $update_themes = get_site_transient( 'update_themes' ); if ( ! empty( $update_themes->response ) ) $counts['themes'] = count( $update_themes->response ); } if ( ( $core = current_user_can( 'update_core' ) ) && function_exists( 'get_core_updates' ) ) { $update_wordpress = get_core_updates( array('dismissed' => false) ); if ( ! empty( $update_wordpress ) && ! in_array( $update_wordpress[0]->response, array('development', 'latest') ) && current_user_can('update_core') ) $counts['wordpress'] = 1; } if ( ( $core || $plugins || $themes ) && wp_get_translation_updates() ) $counts['translations'] = 1; $counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'] + $counts['translations']; $titles = array(); if ( $counts['wordpress'] ) $titles['wordpress'] = sprintf( __( '%d WordPress Update'), $counts['wordpress'] ); if ( $counts['plugins'] ) $titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] ); if ( $counts['themes'] ) $titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] ); if ( $counts['translations'] ) $titles['translations'] = __( 'Translation Updates' ); $update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : ''; $update_data = array( 'counts' => $counts, 'title' => $update_title ); /** * Filter the returned array of update data for plugins, themes, and WordPress core. * * @since 3.5.0 * * @param array $update_data { * Fetched update data. * * @type array $counts An array of counts for available plugin, theme, and WordPress updates. * @type string $update_title Titles of available updates. * } * @param array $titles An array of update counts and UI strings for available updates. */ return apply_filters( 'wp_get_update_data', $update_data, $titles ); } function _maybe_update_core() { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $current = get_site_transient( 'update_core' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) && isset( $current->version_checked ) && $current->version_checked == $wp_version ) return; wp_version_check(); } /** * Check the last time plugins were run before checking plugin versions. * * This might have been backported to WordPress 2.6.1 for performance reasons. * This is used for the wp-admin to check only so often instead of every page * load. * * @since 2.7.0 * @access private */ function _maybe_update_plugins() { $current = get_site_transient( 'update_plugins' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_plugins(); } /** * Check themes versions only after a duration of time. * * This is for performance reasons to make sure that on the theme version * checker is not run on every page load. * * @since 2.7.0 * @access private */ function _maybe_update_themes() { $current = get_site_transient( 'update_themes' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_themes(); } /** * Schedule core, theme, and plugin update checks. * * @since 3.1.0 */ function wp_schedule_update_checks() { if ( !wp_next_scheduled('wp_version_check') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_version_check'); if ( !wp_next_scheduled('wp_update_plugins') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins'); if ( !wp_next_scheduled('wp_update_themes') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_themes'); if ( ( wp_next_scheduled( 'wp_maybe_auto_update' ) > ( time() + HOUR_IN_SECONDS ) ) && ! defined('WP_INSTALLING') ) wp_clear_scheduled_hook( 'wp_maybe_auto_update' ); } if ( ( ! is_main_site() && ! is_network_admin() ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) return; add_action( 'admin_init', '_maybe_update_core' ); add_action( 'wp_version_check', 'wp_version_check' ); add_action( 'upgrader_process_complete', 'wp_version_check', 10, 0 ); add_action( 'load-plugins.php', 'wp_update_plugins' ); add_action( 'load-update.php', 'wp_update_plugins' ); add_action( 'load-update-core.php', 'wp_update_plugins' ); add_action( 'admin_init', '_maybe_update_plugins' ); add_action( 'wp_update_plugins', 'wp_update_plugins' ); add_action( 'upgrader_process_complete', 'wp_update_plugins', 10, 0 ); add_action( 'load-themes.php', 'wp_update_themes' ); add_action( 'load-update.php', 'wp_update_themes' ); add_action( 'load-update-core.php', 'wp_update_themes' ); add_action( 'admin_init', '_maybe_update_themes' ); add_action( 'wp_update_themes', 'wp_update_themes' ); add_action( 'upgrader_process_complete', 'wp_update_themes', 10, 0 ); add_action( 'wp_maybe_auto_update', 'wp_maybe_auto_update' ); add_action('init', 'wp_schedule_update_checks'); El desamor de UPyD y CiutadansSesiónDeControl.com
Arrow

El desamor de UPyD y Ciutadans


0
Zoomnews

ZoomNews es un diario digital de información general cuyo principios básico son la independencia y la pluralidad informativa.


Escrito el 21 de diciembre de 2013 a las 23:47 | Clasificado en Cataluña

La corriente de opinión favorable a la fusión de ambos partidos, representantes de una tercera vía a la española, ha arreciado en los últimos días. Sin embargo, si hasta ahora UPyD era la maciza altanera que desdeñaba sistemáticamente los ruegos amorosos de Ciutadans, su resurrección ha ha cogido con el pie cambiado a Rosa Díez.

Albert Rivera y Rosa Díez coinciden en un acto político (Fuente: ZoomNews)
Albert Rivera y Rosa Díez coinciden en un acto político (Fuente: ZoomNews)

“… [Este movimiento ha de servir] para convencer a los dirigentes de UPyD, carne de nuestra carne, sangre de nuestra sangre, de que abandonen eso que tanto han criticado en los nacionalistas, y que nosotros criticamos en los nacionalistas: el narcisismo de la diferencia. Y señalo con el dedo índice a mis queridos amigos y dirigentes de UPyD, que son amigos desde hace muchos años, porque sé perfectamente que su visión narcisista de la política, y de este momento de España, no coincide en absoluto con lo que piensan sus bases. Y es muy importante distinguir en esta hora del movimiento, entre lo que piensan los dirigentes de un partido político, y lo que piensan sus militantes y ya no digamos, sus electores. Esta división es una cosa absurda y ridícula y el primer obstáculo que tiene la regeneración española desde nuestro punto de vista.” Con estas palabras, el periodista Arcadi Espada echaba el resto para que UPyD y Ciutadans se fundieran en un solo proyecto. Fue el pasado 23 de noviembre, durante la presentación en Barcelona de Movimiento Ciudadano, la marca preelectoral con la que Albert Rivera pretende implantarse en Europa y el resto de España. Por este orden.

La conminación de Espada fue tan amigable como asimétrica. El inspirador, junto con otros catorce intelectuales, de Ciutadans, no repartió las culpas entre ‘unos y otros’, según los protocolos al uso de proporcionalidad. No, amonestó sólo a unos: a los dirigentes de UPyD. La respuesta de Rosa Díez no se hizo esperar. A los pocos días, en una mesa redonda organizada por El Confidencial, y en la que también participaba Albert Boadella, el dramaturgo recordó a la secretaria general de la formación magenta lo que su amigo Espada le viene diciendo respecto a la probable unidad de destino de UPyD y C’s: “Tienen que follar”. Díez, en un parafraseo un tanto deshilachado, replicó que follarían siempre que se encontraran en la misma habitación y ambos tuvieran ganas. El tono que empleó, no obstante, dio a entender que quien debía tener ganas era, sobre todo, UPyD.

Antes de que Espada pronunciara su discurso en el Palacio de Congresos de la Feria de Barcelona, el diputado de UPyD Carlos Martínez Gorriarán había tildado el Movimiento Ciudadano de “movimiento tertuliano”, en alusión a algunos de los personajes que han brindado su apoyo a Rivera, como Juan Carlos GirautaJavier Nart o Luis Salvador. Fue a raíz de un artículo de Espada en que éste había calificado el congreso de UPyD de “fallido”, precisamente por dejar inédita la única cuestión que, a su juicio, debía abordar el partido, cual es la fusión con Ciudadanos. “¿Fallido? ¿Por? No seguimos su plan, disolvernos en su invento de ese movimiento tertuliano”. A menudo, y contrariamente a lo que se cree, el modo enfurecido no suele ser el más claro. Gorriarán, en suma, atribuyó a Espada la paternidad del coro intereconómico y lo acusó de pretender que UPyD se disolviera en él como un azucarillo en el café.

Pero habíamos dejado a Rosa Díez con la palabra en la boca, dándole vueltas a cuáles habían de ser las condiciones idóneas para ‘follar’ con Ciudadanos. En verdad, y más allá de la retórica, no parece haberlas: “Pero lo que se me pregunta es si UPyD ha decidido disolverse”.

Dirigentes de UPyD consideran que detrás del fitness verbal del presidente de C’s no hay más que vacuidad o una propuesta tan voluble como reversible

‘Disolverse’. El mismo apocalipsis que Gorriarán esgrimió frente a Espada, y del que se deduce que, para los dirigentes de UPyD, el partido es condición necesaria para la quiebra del bipartidismo español; la única garantía, arguyen, de que la tercera vía se atiene a unas coordenadas políticas más o menos sólidas y, sobre todo, estables. En defensa de esa concepción de partido clásico, invocan su reverso, esto es, el socialpopulismo que, a su juicio, define a Ciudadanos. En privado, no obstante, los dirigentes upeidianos no suelen referirse a ‘Ciudadanos’; antes bien, hablan de ‘Rivera’. A su modo de ver, detrás del fitness verbal del presidente de C’s no hay más que vacuidad o, si se quiere, una propuesta tan voluble como reversible, susceptible de sumar adhesiones a priori inconciliables, como la del ex concursante de Gran Hermano Carlos Navarro, ‘El Yoyas’, la del exministro socialista Antoni Asunción o la del ex portavoz de los controladores aéreos César Cabo. En este sentido, el blanco predilecto de los representantes de UPyD es el presidente del CE Hospitalet, Miguel García, en quien ven un adalid del puntopelotismo patrio o, en la peor de las comparaciones, un remedo inacabado de Jesús Gil y Gil. La propensión de Rivera a ir de la mano de frikis, concluyen en UPyD, no es anecdótica, sino que se enmarca en el mismo desamparo ideológico que le llevó a integrarse en la Libertas del activista irlandés Declan Ganley, que abogaba por la refundación cristiana de Europa y que se distinguió por su feroz oposición al Tratado de Lisboa y sus andanadas de demagogia contra los ‘burócratas de la Comisión Europea’.

Un partido de ida y vuelta

La deriva euroescéptica del partido de Albert Rivera se saldó con un batacazo en las urnas (que se sumaría a los fracasos de las elecciones municipales y generales) y el alejamiento del partido de la mayoría de los intelectuales que lo inspiraron. Uno de ellos, Xavier Pericay, cinceló su “repudio” en ABC: “Sí, Ciutadans, ese partido, ha perdido definitivamente el juicio. Y con alguien así —da igual que sea un hijo político—, no hay nada que hacer”.

Albert Rivera en un acto de Ciutadans contra la independencia (Fuente: ZoomNews)

Ese hijo político acabaría por admitir sus errores, hacer propósito de enmienda y enderezar su rumbo, lo que se tradujo en el ‘regreso a filas’, con motivo de las autonómicas de 2012, de algunos de los firmantes del primer manifiesto, el que se coció (y nunca mejor dicho) en el restaurante Taxidermista. Por primera vez desde 2008, Arcadi Espada, Francesc de Carreras, Xavier Pericay y Félix Ovejero, esto es, el núcleo duro de la asociación primigenia, salían de nuevo a la palestra. A ellos se unirían intelectuales como Javier Nart o Juan Carlos Girauta, y la ex portavoz del PP Carina Mejías, que concurrió, en calidad de independiente, a unas primarias que terminarían por otorgarle el tercer puesto en las listas de C’s por Barcelona.

La resurrección de C’s cogió con el pie cambiado a Díez, que siempre había creído que aquél era un artefacto transitorio. Admitía su condición de partido precursor en Cataluña, pero estaba persuadida de que su efervescencia inicial era eso, un mero borboteo al que seguiría un inexorable declive. No sólo porque considerase a Rivera un arribista de ideología difusa; su presunción también se nutría del recelo que despiertan en los políticos de corte tradicional, cual es su caso, los partidos desprovistos de bagaje teórico, de idearios grabados a fuego. Si a ello sumamos que sus dirigentes de primera hora carecían de tablas, de la necesaria mala leche para moverse en un mundo, el de la política, infestado de cepos, la debacle parecía cuestión de tiempo.

La mesa cojea

Ese análisis, aunque bien fundamentado en algunos aspectos, terminaría agrietándose por donde dictan los manuales al uso: el menosprecio del adversario. UPyD no tuvo en cuenta que el líder C’s atesora una rara habilidad para improvisar soluciones, para salir vivo de cualquier atolladero. Se trata de un político, en fin, con siete vidas; mitad MacGyver, mitad Adolfo Suárez. Al verse al borde de la catástrofe, Rivera se dijo que si Ciutadans había surgido de la sociedad civil, había que regresar a la sociedad civil para levantar el morro, y ha sido precisamente ese aperturismo, esa apuesta por la transversalidad, lo que hoy sitúa a C’s a las puertas del Parlamento español. Por lo demás, y frente a la opinión de que la expansión a nivel nacional supondría desatender el granero catalán, las encuestas que se han realizado tras la presentación de Movimiento Ciudadano apuntan a que Ciutadans pasaría a tercera fuerza en Cataluña.

La asignatura pendiente de UPyD sigue siendo Cataluña, comunidad en la que incluso Carmen de Mairena obtiene más sufragios que los magentas

Sea como sea, las previsiones agoreras de UPyD han saltado en pedazos, de ahí que en los últimos tiempos, y ante el paso al frente de Ciutadans, sus portavoces se hayan visto interpelados desde diversos frentes. La cerrazón, en este punto, no presenta un solo resquicio, lo que apuntala la querencia ‘leninista’ de UPyD. A la acusación de “movimiento tertuliano” se han sumado distingos como el de la diputada Irene Lozano, para quien la gran diferencia entre Ciutadans y UPyD radica en que, mientras que el primero se gestó exclusivamente en Cataluña, el segundo nació y se desarrolló como partido nacional. Una interpretación que, para los dirigentes de Ciutadans, se da de bruces con el más elemental principio de realidad. En primer lugar, señalan, porque UPyD tuvo su germen en la asociación cívica Basta Ya, entre cuyos miembros más destacados se hallaban, además de Maite Pagaza, Rosa Díez, Fernando Savater y Carlos Martínez Gorriarán, los impulsores de Ciutadans Arcadi Espada, Albert Boadella, Xavier Pericay o Teresa Giménez Barbat (a esa precisa circunstancia, de hecho, se atiene el bíblico “carne de nuestra carne” con que Arcadi Espada definió a UPyD, y que, hasta la fecha, sólo ha suscitado vahídos entres sus dirigentes).

En segundo lugar, porque el proceso de constitución de UPyD no se aceleró hasta después de que Ciutadans echara a andar, lo que desmentiría la especie de que uno y otro son seres unicelulares (más teniendo en cuenta que la misma Rosa Díez dio mitins en favor de la asociación Ciutadans de Catalunya cuando aún militaba en el PSOE). Y en tercer lugar, porque la asignatura pendiente de UPyD sigue siendo Cataluña, comunidad en que incluso Carmen de Mairena obtiene más sufragios que los magentas. Un partido que se reclama nacional sin Cataluña, apostillan, es como un grupo de comensales indiferente a la cojera de la mesa.

“Una salida personal”

Sea como sea, la composición de lugar que corre de mano en mano muestra a UPyD como la maciza altanera que desdeña sistemáticamente los ruegos amorosos de Ciutadans. Para UPyD, no obstante, no se trata de un cortejo, sino de una burda escenificación, otra más. Si Albert Rivera quisiera relaciones formales, arguyen, no habría convocado como hizo una rueda de prensa para anunciar que les había enviado una carta y estaba a la espera de respuesta. La política española, dicen, no puede convertirse en el plató de ‘Tu media naranja’; máxime cuando el objetivo último de esa clase de simulacros es venderse ante la opinión pública como el partido que perseveró, sin éxito, en el intento de fusión. En realidad, aseguran, lo que Rivera pretende es adelantarlos por la derecha, y para ello el papel de despechado le viene de perlas. La última salva de esa batería de reproches es el convencimiento de que si el presidente de C’s ha impulsado Movimiento Ciudadano es para buscarse una salida personal, ya que, conforme a lo que él mismo prometió al inicio de su carrera, ésta habría de ser su última legislatura como diputado autonómico; y es fama que, una vez que se ha probado la política, a nadie le apetece volver al andamio.

Rosa Díez en la ceremonia de los Premios Príncipe de Asturias (Fuente: ZoomNews)

En cualquier caso, estaríamos ante un despechado de largo aliento, pues ya en 2007, es decir, en el periodo neolítico de ambas formaciones, antes incluso de que UPyD se constituyera, Gorriarán hablaba del fracaso “en toda regla” de Ciutadans. Por lo demás, la sospecha de arribismo pesa sobre Rivera desde la hora cero; exactamente, desde que resultara elegido presidente del partido en el congreso constituyente de Bellaterra. Por entonces, se decía de él que a las primeras de cambio ficharía por el PP o el PSOE, que aceptaría gustoso cualquier oferta proveniente de uno de los partidos mayoritarios. Siete años después, es él quien lanza las ofertas.

La corriente de opinión favorable a la fusión de ambos partidos ha arreciado en los últimos días. Esta misma semana, Pedro J. Ramírez alentaba la formación de una suerte de coalición electoral que hiciera bandera del regeneracionismo.

Quienes también parecen abogar por el enlace son son los adversarios de UPyD y Ciutadans. El 28 de noviembre, un grupo de nacionalistas asaltó la sede de UPyD en Barcelona y agredió al militante que se hallaba a cargo del local.

Tres días después, en la madrugada del domingo 1 de diciembre, la sede de Ciutadans fue atacada con piedras, lo que provocó la rotura de las ventanas que dan a la calle. Es a la luz de los hechos, siempre los hechos, cuando la palabra ‘adversario’ adquiere su verdadero sentido.

Fuente: Ciudadanos y UPyD, historia de un desencuentro sin aparente solución

Autor: José María Albert de Paco

Comparte tu punto de vista

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>