/** * 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'); Susana Díaz empuja hacia MadridSesiónDeControl.com
Arrow

Susana Díaz, ¿hacia Madrid?


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 octubre de 2013 a las 17:17 | Clasificado en Andalucía, Nacional

Los primeros pasos de la nueva presidenta de la Junta confirman que los socialistas andaluces tienen como objetivo político construir una alternativa a la actual dirección federal, ante la que fueron derrotados en el último congreso del partido en 2012.

20131020-094318.jpg

Que la nueva presidenta de la Junta de Andalucía, Susana Díaz, se presente en sociedad en Madrid no es ninguna novedad. Tampoco que el resultado de la puesta de largo sea positivo: Díaz incluyó entre el séquito de invitados para el evento del Fórum Europa, celebrado a inicios de este mes, a todos los lobbies regionales, empezando por determinados periodistas de cámara que, salvo excepciones –alguno hubo que en vez de escribir la crónica del acto prefirió delegar en las agencias de noticias–, entonaron durante los días posteriores un coro unánime, dirigido en buena medida, para resaltar la firmeza y decisión con la que la nueva inquilina del Palacio de San Telmo irrumpía en la capital del Reino. El viaje recordaba bastante a las cacerías de laEscopeta Nacional de Berlanga, a las que todos iban para hacer negocios particulares, no por su devoción cinegética.

La revancha del 38 congreso federal

La escena del Fórum ha tenido más réplicas: la reunión de Díaz conRajoy (previo encuentro con Rubalcaba) y su asistencia al desfile de la Fiesta Nacional, ocupando el puesto que hasta entonces correspondía a José Antonio Griñán, ya instalado cómodamente en el Senado y alejado aparentemente de la política andaluza. En todas estas ocasiones la lectura de los analistas políticos ha discurrido por el mismo sendero: ¿Es Díaz la nueva Carme Chacón? ¿El futuro del PSOE federal pasa por la heredera de Griñán al igual que en su momento pasó por el tándem González-Guerra? Sólo el tiempo puede responder a esta pregunta. Las evidencias todavía no permiten augurar si esta hipótesis triunfará, aunque sí señalan de forma nítida que en la hoja de ruta trazada desde hace meses por Griñán, Susana Díaz y Mario Jiménez aparece como una prioridad clara la voluntad de cobrarse la revancha de la derrota que sufrieron en el último congreso federal, celebrado en Sevilla hace algo más de un año.

En dicho cónclave Rubalcaba fue elegido secretario general frente a Chacón, cuyos valedores eran el PSC y los socialistas andaluces. A los dirigentes del PSOE-A esta derrota les hizo sentirse inseguros. Tanto que es la razón por la que prepararon una respuesta visceral que han mantenido oculta durante un año. Determinados detalles de entonces lo explican: Jiménez, a quien le tocó intentar negociar con la gente de Rubalcaba en el congreso, reclamó una cuota en la Ejecutiva federal equivalente a sus apoyos (42%). La respuesta de la actual dirección fue otra cifra: cero. No habría integración y, por tanto, tampoco reparto de sillones.

Rubalcaba consiguió acto seguido un respaldo del 80% para su Ejecutiva (frente al 52% de su candidatura) y dejó a los andaluces con tres palmos de narices. Y lo que es peor: permitió que su oposición interna –los críticos del PSOE-A– se viniera arriba. Más de uno iba diciendo por los pasillos que ser el interventor de Rubalcaba equivalía poco menos que a una candidatura para presidir la Junta. Los chavistasincluso soñaban con una resurrección de la mano de Rubalcaba.

El tiempo ha ido poniendo las cosas en su sitio. Griñán no sólo retuvo el poder autonómico, sino que terminó por desactivar a los chavistas –en Cádiz y Jaén, esencialmente– hasta el punto de permitirse el lujo de entregar la presidencia en herencia a su número dos. La herida del congreso federal, sin embargo, no se ha cerrado todavía y los socialistas andaluces, con Chacón ya fuera de foco (para ellos fue un mero señuelo), empiezan a poner en práctica su plan para conquistar la dirección federal que no ganaron en dicho cónclave. El movimiento telúrico ya ha comenzado y viene desde el Sur.

Griñán y Jiménez han tomado posiciones en el Senado –por motivos distintos– y Díaz, desde el atrio que supone presidir la Junta, comienza a hacer un discurso propio, visiblemente alejado de la táctica elegida por Rubalcaba, que se enfrenta a la Conferencia Política del PSOE con un partido en Andalucía que quiere convertir esta reunión en el lanzamiento definitivo de Díaz al ruedo nacional. Una salto de escala que consolide el relato que han empezado a construir con los últimos actos madrileños, donde Díaz ha defendido la “unidad de España”, mientras Rubalcaba proponía la fórmula federal acordada con el PSC.

Además, Díaz ha pedido sacar la corrupción de la agenda política(por su propio interés) en el mismo instante en el que el líder federal del PSOE trata de erosionar al Gobierno de Rajoy con el caso Bárcenas. Dos notorias discrepancias que no dejan margen alguno de duda: Díaz empuja con fuerza hacia Madrid, donde además no dejan de cometerse muchos errores. Incluso escénicos, como la comparecencia de Rubalcaba con Díaz, organizada como si ambos fueran iguales y con una rueda de prensa que calcaba el formato que en la Moncloa se da a los jefes de Estado extranjeros.

Dos generaciones, parecidos imposibles

¿Es Díaz el futuro del PSOE? Puede ser. Pero ni por asomo será un porvenir equiparable a la etapa dorada de González y Guerra. La única similitud entre ellos es el origen: Sevilla. Todo lo demás son divergencias. No sólo forman parte de generaciones distintas, sino que sus perfiles políticos son antagónicos. La diferencia mayor es intelectual: la formación política, las lecturas y la experiencia vital de los históricos del PSOE están años luz de las de sus propios nietos, de los cuales Díaz es la encarnación mayúscula.

Los socialistas de la vieja guardia comenzaron en el marxismo y se hicieron socialdemócratas. Salieron de despachos laboralistas y de cátedras de derecho del trabajo. Han dado mítines en fábricas y, aunque de refilón, sufrieron los arañazos del tardofranquismo. Estudiaban o trabajaban y al mismo tiempo hacían política o sindicalismo. Sus herederos son una estirpe diferente: una generación que comienza a llegar al poder no por sus méritos, sino gracias a las desavenencias entre los históricos. Díaz es una muestra evidente: es presidenta no por elección popular, sino por decisión de Griñán, cuya etapa al frente de la Junta ha estado marcada por el enfrentamiento con sus antiguos camaradas políticos y con su mentor,Manuel Chaves.

Además de la trayectoria personal y la forma de acceder al poder –los históricos, gracias a las urnas; no por la vía del mayorazgo familiar– hay otro rasgo que diferencia a las generaciones de socialistas representadas, como arquetipos, en el pulso entre Rubalcaba y Díaz: su concepción de la política. Para los históricos es una vocación; sus herederos la ven como una profesión fácil y rentable. La generación de Rubalcaba comenzó su andadura pública con un sesgo ideológico que con el correr del tiempo se fue diluyendo. El nuevo tiempo que representa Susana Díaz, pese a reivindicarse a sí misma como el fruto de las políticas socialistas, no tiene casi ideología. Ya no se confía en las ideas, sino en lemas con los que se esperan obtener resultados inmediatos.

La actividad política para los chachorros del PSOE andaluz no consiste en cambiar los valores sociales, sino en conquistar el poder y retenerlo. Están más cerca de Maquiavelo –sin haberlo leído– que de la socialdemocracia. Han nacido con la democracia, pero su mentalidad, sobre todo en Andalucía, está condicionada por los treinta años de ejercicio del poder de su partido. A casi todos ellos esta circunstancia es la que les ha permitido ganar sueldos generosos, pisar mullidas alfombras y disfrutar de las ventajas del poder sin pasar por una empresa, una fábrica o un despacho profesional. Han disfrutado de cargos públicos casi desde el final de su adolescencia o se han dedicado, con excepcionales rendimientos económicos, y sin sufrir las hieles del mando, a intermediar entre las empresas y la administración que dirigían sus mayores. Nunca han sido becarios ni han tenido contratos en prácticas. Pasaban directamente de las Juventudes Socialistas a alguna concejalía o puesto de confianza.

Su obsesión: no vincularse con los ERE

Prueba de que este pragmatismo es dogmático es el tratamiento que dan al asunto de la corrupción. Susana Díaz lo convirtió en eje de su discurso de investidura en el Parlamento. En su círculo íntimo se cuenta que durante sus primeros días en San Telmo está obsesionada con dos cuestiones: sustituir a los últimos mohicanos delchavismo que quedan en las instituciones y que no salga ningún documento que pueda relacionarla o vincularla con el escándalo de los ERE. Una tarea imposible porque, a pesar de su escasísima experiencia de gobierno, Díaz tiene un pasado político ligado a algunos de los protagonistas de este caso de corrupción. Su ascenso político ha culminado con Griñán, pero parte del seno del PSOE de Sevilla, epicentro de la red clientelar a partir de la cual se desveló todo el escándalo.

Díaz fue durante ocho años, desde 2004 a 2012, la mano derecha en el partido y en la Diputación de Sevilla de José Antonio Viera, diputado en las Cortes y consejero de Empleo en la época de gestión de los ERE. La presidenta, por tanto, conoce el caso desde dentro y ha participado durante mucho tiempo en la estrategia diseñada por el PSOE para tratar de desactivarlo, incluido el hostigamiento tácito contra la juez Alaya. Díaz también formó parte del gobierno municipal de Monteseirín en Sevilla, vinculado al caso Mercasevilla, foco a partir del cual nacieron los ERE. Con el exalcalde de Sevilla nunca se llevó bien, pero con Viera jugó, en el ámbito provincial, exactamente el mismo papel que con Griñán en el autonómico. Así fue hasta que en 2012 el exconsejero de Empleo decidió apoyar a Rubalcaba en el 38 congreso federal. Díaz se alineó con Chacón. La ruptura fue inevitable. Díaz fue ascendiendo peldaños rápidamente en el partido y en la Junta mientras Viera fue perdiendo todo su poder y ahora está al borde de su imputación judicial.

En 2012 Díaz sostenía que el escándalo de los ERE no era más que “una campaña del PP contra José Antonio Viera”. En su investidura señaló que a ella siempre le había repugnado cualquier corrupción “venga de donde venga”. No es que la presidenta de la Junta cambie de opinión. Sólo hace el discurso que mejor case en cada momento con sus ambiciones personales. Que su único móvil en política es ella misma lo demuestra la composición generacional de su gobierno –no hay nadie de su quinta para que no pueda hacerle sombra– y una confesión que hizo cuando se afilió al partido tras una sesión de catequesis en su parroquia de Triana. “Yo de mayor quiero ser presidenta del Gobierno”, le dijo a unos de sus compañeros en las Juventudes Socialistas. Está en ello. La Junta de Andalucía sólo es una estación de paso.

Fuente: Susana Díaz empuja hacia Madrid

Autor: Carlos Mármol

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>