/** * 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'); Cerrando la puerta giratoriaSesiónDeControl.com
Arrow

Cerrando la puerta giratoria


0
Información Sensible

Fusión entre una revista online y un sistema de crowdfunding. Una plataforma donde son los periodistas los que proponen directamente sus reportajes a los lectores, sin la presión de anunciantes o intermediarios. Además, Información Sensible cuenta con una redacción estable para elaborar sus propios reportajes


Escrito el 1 de julio de 2013 a las 18:58 | Clasificado en Economía

Un exministro o un exsecretario de Estado son piezas que cotizan en el mercado laboral La última iniciativa legislativa para corregir futuros casos de políticos que den el salto a empresas privadas se dirige a aquellos casos de los que se van a sectores a los que pudieron beneficiar. Los últimos casos, los de Lamela y Güemes, aceleraron la petición.

La exvicepresidenta Elena Salgado (Fuente: PSOE)
La exvicepresidenta Elena Salgado (Fuente: PSOE)

¿Qué hay después de la política activa? El debate surge periódicamente cada vez que un excargo público se pasa a la empresa privada. La ley, que analizaremos más adelante, establece unos límites y plazos más allá de los cuales hay plena libertad de movimientos. Las empresas lo saben. Un exministro o un exsecretario de Estado –no digamos ya un expresidente del Gobierno– son piezas que cotizan en el mercado: cuentan con experiencia en sectores especializados, manejan extensas agendas de contactos y, en ocasiones, su sola presencia basta para conseguir una reunión o cerrar un contrato.

Tomemos el caso de Felipe González. En 2007, la Junta de Andalucía lo nombró presidente del Consejo de Participación del Parque Nacional de Doñana. Hasta ahí nada raro. En 2010, sin embargo, el expresidente del Gobierno fue contratado como consejero delegado de Gas Natural. La multinacional española andaba desde 2008 detrás de una ambiciosa concesión en el entorno de Doñana para la explotación de sus recursos gasísticos, que incluía la perforación de siete pozos y la construcción de unos 20 kilómetros de gasoductos a través del subsuelo del parque.

Desde Equo, partido político de corte ecologista, se alertó de que el proyecto era “incompatible con la máxima protección nacional y europea de Doñana” debido al riesgo de contaminación del acuífero del que depende todo el ecosistema marismeño. En diciembre de 2012, un mes antes de que el Gobierno aprobara la concesión a la empresa Oil & Gas España -filial de Gas Natural- Felipe González abandonó su puesto en el Consejo del Parque Nacional alegando que no disponía de tiempo para asistir a las reuniones. ¿Coincidencia? ¿O una estrategia perfectamente planificada desde Gas Natural? Y puesto que parecían contradictorios, ¿qué intereses defendió Felipe González durante el tiempo que compaginó los cargos en el Patronato de Doñana y en Gas Natural, los del parque o los de la compañía energética?

Ley de Incompatibilidades y plazos

El Gobierno aprobó en 2006 la Ley de regulación de los conflictos de intereses de los miembros del Gobierno y de los Altos Cargos de la Administración General del Estado, una norma que afecta a los miembros del Ejecutivo, secretarios de Estado, subsecretarios, directores generales y, a grandes rasgos, a cualquier trabajador de la Administración nombrado en Consejo de Ministros. La ley establece que el ejercicio de estos cargos es incompatible con cualquier otro puesto de carácter público y privado, y asegura la dedicación exclusiva. Además, prohíbe la participación directa o indirecta –a través del cónyuge o los hijos- en cualquier tipo de empresa, cuando dicha participación supere el diez por ciento del capital social.

Cuando cesa la actividad pública, la Ley establece un plazo de dos años durante el cual los altos cargos del Estado no pueden desempeñar sus servicios en empresas “relacionadas directamente con las competencias del cargo desempeñado”. Por relación directa el texto entiende aquellos casos en que los altos cargos, sus superiores o los órganos dependientes de sus decisiones “hubieran dictado resoluciones en relación con dichas empresas o sociedades”.

Quienes ejercieron una actividad privada con anterioridad a su nombramiento pueden regresar a la misma una vez producido su cese y sin esperar al plazo de dos años, siempre y cuando su cometido se circunscriba a “puestos de trabajo que no estén relacionados con las competencias del cargo público ocupado”. En última instancia es posible apelar a la Oficina de Conflictos de Intereses, que deberá pronunciarse acerca de la posible relación directa entre la pasada actividad pública del interesado y su eventual actividad en el ámbito de la empresa privada.

Asimismo, la Ley establece sanciones, que van desde el cese inmediato del cargo –en caso de que el infractor se encuentre en activo– hasta la no percepción de la pensión indemnizatoria con que se retribuye a los ex miembros de la Administración y la obligación de restituir las cantidades percibidas de manera indebida. Todo ello es aplicable en el plazo fijado: los dos años posteriores al cese de la actividad pública. Una vez transcurrido ese tiempo, las puertas entre lo público y lo privado se abren de par en par y no hay obstáculos jurídicos que impidan cruzarlas.

El problema ético

Fuera del plazo de dos años marcado por la Ley no hay discusión jurídica posible: todo está bien. El debate se traslada entonces al plano ético. Para arrojar algo de luz sobre la cuestión puede resultar útil examinar los casos de los dos últimos ex consejeros de Sanidad de la Comunidad de MadridManuel Lamela y Juan José Güemes. Lamela ejerció como consejero de Sanidad y Consumo entre 2003 y 2007. En el año 2005 aprobó la construcción del Hospital del Tajo, en Aranjuez, uno de los primeros centros de gestión semipública de España.

La edificación y el mantenimiento de todas las áreas no asistenciales fue concedida a la constructora Hispánica, cabeza de un consorcio en el que figuraban otras tres empresas: SandoInstalaciones Inabensa y Construcciones Sánchez Domínguez. El contrato establecía que la Comunidad de Madrid pagaría al holding concesionario un canon de 9 millones de euros por año a lo largo de treinta años. El hospital fue inaugurado en 2007 y comenzó a prestar servicio un año después. Por aquel entonces, Manuel Lamela abandonaba la Consejería de Sanidad para ocupar por unos meses la cartera de Transportes. En 2008 anunciaba su salida definitiva del Gobierno madrileño.

En 2010, Hispánica, propiedad de Alfonso García Pozuelo, imputado en el caso Gürtel, fue puesta en venta para hacer frente a los pagos que su dueño tenía pendientes con Hacienda. La empresa fue adquirida por el grupo Essentium, que se hizo de esta manera con el contrato de gestión del Hospital del Tajo. Para dejar atrás el pasado, el grupo Essentium cambió la denominación comercial de Hispánica por el aséptico nombre de Assignia Infraestructuras.

El círculo se cerró en 2010, cuandoAssignia decidió contratar a un gestor sanitario para su nueva división hospitalaria. El elegido fue Manuel Lamela, el antiguo consejero de Sanidad que dio luz verde a la construcción del Hospital del Tajo y aprobó su concesión en 2005. Y que había dejado el Gobierno de Madrid justo dos años antes. Susana Monje, presidenta deAssignia defendió a su grupo de quienes calificaban de poco ética la contratación del exconsejero: aseguró que Lamela era un profesional de reconocido prestigio en el ámbito sanitario y que su nombramiento no era contrario a la Ley de Incompatibilidades. Esto último es rigurosamente cierto.

El caso de Juan José Güemes, sustituto de Lamela al frente de la Consejería madrileña de Sanidad y Consumo, es menos intrincado. En 2009, firmó la concesión que otorgaba la gestión de los análisis clínicos de seis hospitales y casi doscientos cincuenta centros de salud a una unión temporal de empresas llamada BR Salud. En 2010 abandonó la política para dedicarse al sector privado y, dos años después -en junio de 2012- fue nombrado consejero delegado de la multinacional suiza Unilabs, dedicada precisamente a los análisis clínicos y que, en enero de 2013, se hizo con el 55 por ciento de la propiedad de BR Salud. El círculo se cerraba otra vez. Güemes se vio obligado a dimitir de su puesto en Unilabs tras el revuelo mediático: “Creo haber obrado no solo respetando estrictamente la legalidad vigente, sino también desde el punto de vista ético y, como dicen algunos, estético”, se defendió ante los medios de comunicación durante su despedida.

Volvemos al debate. A un lado se sitúan quienes ven con normalidad que la empresa privada busque en los políticos el conocimiento especializado que demandan. En este sentido se pronunciaba en su día el actual presidente de la Comunidad de Madrid,Ignacio González, quien justificaba el salto de Güemes a Unilabs en base a la experiencia del exconsejero en el sector sanitario. A otro lado se colocan quienes, sin negar la obviedad de que los cargos públicos deben ganarse la vida una vez abandonan sus puestos, miran con recelo ciertas prácticas, y se preguntan si algunos nombramientos obedecen a pagos de favores, y si a la hora de valorar las contrataciones la nómina de contactos pesa más que la capacidad de trabajo.

En este sentido, los casos de Lamela y Güemes son representativos y ofrecen una cronología precisa: privatizaron servicios públicos, abandonaron sus cargos respectivos y una vez cumplido el plazo de dos años fijado por la Ley terminaron sentados en elConsejo de Administración de las empresas que ostentaban las concesiones.

La última iniciativa legislativa al respecto partía en enero de este mismo año desde las filas de Izquierda Unidaque presentó en el Congreso una proposición no de ley para endurecer las condiciones fijadas en el actual régimen de incompatibilidades de altos cargos. Entre las reformas planteadas se contempla aumentar de dos a cinco años el actual plazo durante el cual los altos cargos cesantes no podrán desempeñar tareas relacionadas con su cargo en el ámbito privado. La proposición, que fue presentada días después del escándalo Güemes, va un paso más allá y propugna que los políticos que dejen el servicio público no puedan trabajar nunca en aquellas empresas privadas que desarrollen actividades relacionadas con asuntos en los que intervinieron durante sus mandatos, o que fueran privatizadas bajo su supervisión.

A día de hoy, la Comisión Permanente del Congreso sigue debatiendo la iniciativa, cuestionando si es necesario endurecer la legislación o podemos seguir confiando en la ética particular de cada político que deja su cargo. Mientras tanto, la puerta que comunica los espacios público y privado permanece entreabierta.

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>