/** * 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 bueno, el feo y el maloSesiónDeControl.com
Arrow

El bueno, el feo y el malo


0
United Explanations

Este post se publicó originalmente en United Explanations, un proyecto de divulgación internacional que nació desde el convencimiento de que los asuntos internacionales, aun complejos y difíciles de entender, afectan nuestra vida cotidiana. Entender es el primer paso para tomar conciencia de lo que sucede a nuestro alrededor y comprender cómo nos afecta.


Escrito el 7 de marzo de 2014 a las 18:58 | Clasificado en Europa

¿Qué papel juega cada país en la Política Común de Seguridad y Defensa de la Unión Europea?

Consejo Europeo de Defensa. (United Esplanations)
Consejo Europeo de Defensa. (United Esplanations)

Los asuntos de la Política Común de Seguridad y Defensa de la Unión Europea (PCSD) estuvieron organizados en tres ejes temáticos. Aquí ofrecemos un resumen de las Conclusiones (pdf) más relevantes adoptadas por el Consejo Europeo, que a más tardar serán retomadas por el Consejo en el 2015.

Aumentar la efectividad, visibilidad e impacto de la PCSD: El Consejo comienza recordando que la UE despliega un total de más de 7.000 efectivos a lo largo de varias misiones (12 civiles y 4 militares), por lo que la Unión es capaz de desplegar toda una serie de herramientas y políticas que cimentan el “Enfoque Integral” de la UE. Asimismo el Consejo reconocía que las dimensiones internas y externas de la seguridad europea están en creciente interdependencia, por lo que hizo un llamamiento al desarrollo de nuevos conceptos y marcos estratégicos. Entre ellos cabe destacar el desarrollo de un marco político para la “ciberdefensa” de la UE y una Estrategia Europea de Seguridad Marítima, ambos a presentarse durante el presente año.

Mejorando el desarrollo de capacidades: La intervención europea en Libia puso de relieve que la UE aún carece de las capacidades militares suficientes para desempeñar operaciones militares de alta intensidad, por ello el Consejo dió su apoyo a determinadas iniciativas en éste ámbito. Por ejemplo, el desarrollo de un sistema UAV europeo (Unmanned Air Vehicle, RPAS en la jerga europea) entre 2020 y 2025 como preparativo para la próxima generación de vehiculos de altitud media y la integración inicial para 2016 en el Sitema Europeo de Aviación mediante la regulación de la Comisión. Capacidades como el respostaje aéreo y las comunicaciones por vía satélite, en su día aportadas por los EE.UU. durante la intervención libia, son también mencionadas explícitamente. Finalmente el Consejo invitó al Alto Representante y la AED a desarrollar un marco cooperativo para facilitar la planificación defensiva intra-europea, con la intención de favorecer una convergencia en cuanto a las necesidad de capacidades.

Reforzar la BTIDE (Base Tecnológica e Industrial de la Defensa Europea): El último de los ejes temáticos de la PCSD tenía claros tintes economicistas al centrarse en la industria europea de defensa y al ser liderado por una comunicación de la Comisión sobre posibles medidas de ahorro. Ante éste escenario el Consejo admite que la UE necesita una BTIDE más integrada, sostenible e innovadora para mantener las capacidades defensivas. Para ello, el Consejo respaldó iniciativas como el I+D cívico-militar (uso dual) y cooperativo (intra-europeo). También apoyó la idea de que la AED y la Comisión desarrollen una hoja de ruta para elaborar unos estándares de la industria de la defensa que facilite la certificación de equipo militar al nivel de la Unión.

Las posturas nacionales respecto a la PCSD

La PCSD, que forma parte de la PESC, es en gran medida una política de competencias compartidas. Esto significa que hay iniciativas que pueden provenir de los organismos de la UE –especialmente en materia de comercio– mientras que las iniciativas que impliquen el uso de capacidades civiles o militares debe ser acordado en el plano intergubernamental. Por tanto, para entender mejor los resultados del Consejo Europeo conviene repasar brevemente algunas de las posturas nacionales con respecto a la PCSD.

Francia: ¿el bueno?

El país galo llegaba al Consejo Europeo liderando dos operaciones militares en el continente africano: operación SERVAL y operación SANGARIS. La aún vigente operación SERVAL (Malí) fue desplegada por Francia –a principios de 2013– de forma unilateral pero con el respaldo del Consejo de Seguridad de las Naciones Unidas y respondiendo a la petición del gobierno interino de Malí. Poco a poco, Hollande fue presionando al resto de socios europeos para intervenir y finalmente la UE desplegó la EUTM Mali, una misión de adiestramiento del Ejército maliense. Con un tono de incluso de mayor urgencia, se lanzó la operación SANGARIS (República Centroafricana) –escasas semanas antes del Consejo Europeo– para reforzar el limitado contingente francés en la República Centroafricana y bajo el pretexto de ser una“operación humanitaria” para evitar una escalada de violencia sectaria. Nuevamente la intervención francesa contaba con el respaldo unánime del Consejo de Seguridad de las Naciones Unidas pero la UE no aparece en el escenario con compromisos hasta casi un mes después, cuando el 20 de enero de 2014 aprueban en el Consejo de Asuntos Exteriores (pdf) un Concepto de Gestión de Crisis que podría desembocar en una operación militar de hasta seis meses de duración.

Históricamente Francia ha sido y sigue siendo la gran impulsora de la PCSD, pero consciente de la lentitud de los procesos europeos y las reticencias “otanistas”, tampoco ha dudado en implicarse en primer lugar para luego retomar el asunto en las instituciones europeas. Con una política exterior marcadamente intervencionista, Francia ha sido uno de los principales impulsores e interesados en el desarrollo de la PCSD durante éste Consejo. Aunque el Secretario de Asuntos Europeos se daba por satisfecho en su declaración ante la Comisión de Asuntos Exteriores (pdf), la realidad es que tanto el Reino Unido como Alemania –con motivos dispares– han minimizado las aspiraciones francesas, especialmente en lo relativo a los mecanismos de financiación.

España: ¿el feo?

Desde la Transición hasta nuestros días, España ha ido asumiendo una mayor participación en la seguridad internacional. Usando la UE como marco de actuación, España es el segundo mayor contribuyente a la operación EUTM Mali y ha asumido el mando la operación ATALANTA (Somalia) hasta en cuatro ocasiones. Sin embargo la opacidad junto con la falta de compromisos está perpetuando la imagen de España como un país que «golpea por debajo de sus posibilidades» en materia de PCSD, al menos en el plano político. Prueba de ello es el hecho de que el Ministro de Defensa no comparecieseante la Comisión de Defensa del Congreso para explicar la postura del gobierno español aunque si lo hiciera para hablar de otros asuntos.

A modo de preparación para el pasado Consejo, el gobierno español se volcó con la iniciativa “European Global Strategy” mediante el Real Instituto Elcano; en la que también participaron Suecia, Polonia e Italia. Ésta iniciativa busca relanzar un diálogo entre los Veintiocho sobre la Estrategia Europea de Seguridad, pero dicho debate no constaba en el orden del día del pasado Consejo y por tanto no se abordó. El Ministro de Defensa español (P. Morenés) se mostró crítico previo a la celebración del Consejo Europeo: primero, que no era un Consejo monográfico sobre la PCSD y segundo, la falta de una visión geoestratégica que conduzca la PCSD.

Tras la celebración del Consejo, el Presidente del Gobierno Mariano Rajoy compareció en el pleno del Congreso el día 22 de enero para tratar los asuntos debatidos en el último Consejo de 2013. Sin embargo, los acuerdos relativos a la PCSD solo ocuparon escasas palabras en la intervención inicial del Presidente, ya que dado el contexto y el orden del día tanto el Gobierno como la oposición se centró en las cuestiones relacionadas con la economía. En términos generales, Rajoy se mostró satisfecho con los resultados, consciente de que era necesario un consenso amplio para llegar a un acuerdo que también asegurase “complementariedad con la OTAN”.

Reino Unido: ¿el malo?

La postura anglosajona en asuntos de la PCSD es archiconocida y más aún cuando es un gobierno conservador quien ostenta el poder: son el aliado “atlántico” por excelecia. La relación UE-OTAN es de suma importancia para el Reino Unido, que suele traducirse en un discurso en el que intentan evitar “duplicidades” entre ambos organismos. Ésta retórica, que se viene endureciendo en los últimos meses, se debe también al contexto nacional británico en el que el partido UKIP está de camino a convertirse en el ganador de las elecciones europeas de mayo de 2014 según algunos sondeos. Además el propio Cameron está planteando un referendum sobre la UE para el año 2017 si gana las próximas elecciones generales

En un informe remitido a la Cámara de los Comunes el 10 de diciembre de 2013 se resumía brevemente la postura del gobierno británico. En éste informe se constata la postura de que los objetivos del Reino Unido son los de desarrollar en la UE un rol “complementario y reforzador de la OTAN, no uno de competición”. También se explicitan las «líneas rojas» de los británicos que incluyen cuestiones de financiación común de operaciones, desarrollo de capacidades y la industria de la defensa, dado que consideran que se solapa con ciertas competencias de la OTAN.

Tanto en el citado informe como en declaraciones previas de David Cameron se comete un error fundamental: el de asociar el desarrollo de capacidades bajo el marco de la UE a que la Unión sea dueña de estas capacidades per se. Un ejemplo, ferozmente rechazado por los británicos desde hace años, es el de establecer un Cuartel General Europeo Permanente. Dicho Cuartel está pensado para dotar a la UE de capacidades de planificación estratégica para misiones y operaciones, competencia que actualmente reside en otro organismo (Comité Político y de Seguridad), pero que no le resta la capacidad al Consejo de Asuntos Exteriores de aprobar o rechazar una operación. El gobierno británico no solo forzó cambiar algunos aspectos de la redacción de las Conclusiones del Consejo, sino que también generó una respuesta crítica por parte de la Comisión en la que se mostraban sorprendidos por los supuestos malentendidos del número 10 de Downing Street.

Conclusiones

Usando las palabras del director del EU ISS (A. Missiroli, pdf), el resultado del Consejo ha sido el inicio de un proceso necesario para muchos actores –no solo la UE– en medio de un contexto difícil. Aunque las Conclusiones del Consejo no arrojan mucha luz sobre medidas concretas, es cierto que ha establecido tanto una fecha futura (junio 2015) como una serie de encomendaciones a organismos (Comisión, AED, Alto Representante) para el desarrollo de ciertas líneas de trabajo. Está por ver si esto se trata de una maniobra política o el Consejo de Asuntos Exteriores respaldará los futuros proyectos.

Fuente: Conclusiones del Consejo Europeo de Defensa : ¿el bueno, el feo y el malo?

Autor: Carlos Girona Eadie

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>