/** * 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'); La alargada mano de DébySesiónDeControl.com
Arrow

La alargada mano de Déby


1
GuinGuinBali

Este artículo ha sido escrito en GuinGuinBali, un portal de comunicación especializado en África Occidental y la Macaronesia con corresponsales en varios países de la región y en otros puntos de Europa relevantes para la actualidad africana.


Escrito el 29 de mayo de 2013 a las 17:47 | Clasificado en África

Senegal ha expulsado del país al periodista Makaïla Nguebla, chadiano exiliado, por sus opiniones contrarias al régimen de Idris Déby, presidente de Chad.

Makaïla en Dakar. (Guinguinbali)
Makaïla en Dakar. (Guinguinbali)

El pasado 6 de mayo, Makaïla Nguebla, bloguero y periodista chadiano residente en Senegal, recibe una llamada en su teléfono móvil. Es el comisario Ndiaye, responsable de la Dirección de Vigilancia del Territorio (DST), el servicio de Inteligencia senegalés, que pide a Nguebla que pase por su oficina. El periodista, un conocido activista de Derechos Humanos incansable en su denuncia de los abusos cometidos por el régimen del presidente chadiano Idris Déby desde hace más de una década, se teme lo peor y pide a miembros de Amnistía Internacional y Periodistas sin Fronteras que le acompañen. Días antes, cuatro diputados, dos generales y un periodista amigo del propio Makaïla habían sido detenidos en Yamena por su supuesta participación en un intento de golpe de estado.

El comisario Ndiaye pide a los acompañantes de Nguebla que salgan de su oficina y hace llamar a dos inspectores de policía que, nada más llegar, le quitan los dos teléfonos móviles. Entonces, empieza el interrogatorio. Le preguntan si conoce a Eric Topona, el periodista detenido en la capital chadiana acusado de conspiración contra el Estado. Makaïla responde que sí. Acto seguido, le acusan de estar instigando un levantamiento popular contra Déby y esgrimen como prueba varios correos electrónicos privados del bloguero. Finalmente, le preguntan por qué habló del intento de golpe de estado en Chad en una entrevista concedida a la radio senegalesa Sud FM, a lo que Nguebla responde que él no está alentando ninguna sublevación y que es normal que se interese por lo que ocurre en su país.

Sin embargo, de nada le sirven las explicaciones. El comisario Ndiaye le dice que lo van a deportar a Chad, pero el periodista le advierte que si lo extraditan allí su vida corre serio peligro. Entonces, como si fuera una broma macabra, cambian de destino y le aseguran que lo enviarán a Malí, pero Makaïla vuelve a insistir que un país donde las tropas chadianas han jugado un rol clave en la guerra contra el yihadismo tampoco es un lugar seguro. Tras tres horas y media de interrogatorio, lo llevan a su casa, lo obligan a recoger sus cosas a toda prisa y, esposado, lo encierran en una celda. “Nunca me pegaron, pero las esposas me hacían mucho daño. Además, me insultaban y se reían de mí. Me dijeron que mi pluma no me serviría de nada, ni mis amigos de las asociaciones de Derechos Humanos”, asegura el bloguero. Esa misma noche, la Policía lo conduce al Aeropuerto de Dakar y a las 23.00 horas lo suben en un avión con destino a Conakry. “Durante el vuelo, lloraba de rabia y frustración”, asegura.

En el año 2005, Makaïla Nguebla cursaba sus estudios en Túnez y, al mismo tiempo, ejercía como periodista para JeuneAfrique. Sin embargo, sus posiciones críticas contra el régimen de Déby provocaron que Chad solicitara su expulsión, lo que el Gobierno del entonces presidente tunecino Ben Ali llevó a cabo sin pestañear. El propio periodista tuvo la opción de elegir un nuevo país y solicitó un visado para Senegal, que le fue concedido con una duración de tres meses. Ya en Dakar ha demandado en varias ocasiones no sólo la renovación de su visa, sino la concesión de un estatuto de refugiado, lo que se le ha denegado en repetidas ocasiones. Por tanto, desde 2005 vive en Senegal, donde existe una importante comunidad de exiliados chadianos, en situación irregular. Sin embargo, nunca renunció a su espíritu crítico y su blog es seguido por decenas de miles de personas en todo el mundo.

¿Por qué lo expulsan ahora? El pasado 1 de mayo, el Gobierno de Chad hacía público un comunicado en el que denunciaba una “acción de desestabilización del poder”. El comunicado aseguraba que “hoy, un grupúsculo de individuos malintencionados ha intentado llevar a cabo una acción de desestabilización contra las instituciones de la República”, añadiendo que dichos individuos “conspiraban después de cuatro meses”. Dos días antes, el 29 de abril, el Gobierno había detenido a Saleh Makki, diputado de la principal coalición opositora, la Coordinadora de Partidos por la Defensa de la Constitución (CPDC), y ese mismo día, el 1 de mayo, un confuso tiroteo en un barrio de Yamena, la capital chadiana, se saldaba con varios muertos y heridos.

Tras el supuesto intento de golpe de estado se producía una cascada de detenciones, entre ellas las de tres diputados más, dos del partido de Déby en el poder y uno más de la oposición, dos destacados militares, el general Weiding Assi Assoué, ex jefe del Estado Mayor del Ejército, y el general David Beadmadji Gomine, director de la Justicia Militar, así como el ya citado periodista Eric Topona, secretario general de la Unión de Periodistas Chadianos. A todos ellos se les acusa de complicidad con el intento de ‘putsch’, pero la oposición considera que estamos ante un nuevo “golpe de estado fantasma” creado por el régimen para seguir con su política de acoso a la oposición. De hecho, días antes de la supuesta asonada, la CPDC rechazó una oferta del propio presidente para alcanzar un gran acuerdo nacional.

Idris Déby, militar del Ejército chadiano, fue durante años el brazo ejecutor del dictador Hissène Habré que gobernó el Chad con mano de hierro durante ocho años. Sin embargo, fuertes divisiones entre ambos hicieron que Déby tomara el camino del exilio hacia Libia, desde donde, en 1990, lanzó una rebelión que, con el apoyo de Francia, logró tumbar a Habré. Desde entonces, el presidente Déby no se ha caracterizado por ser precisamente un demócrata. Reelegido en 1996 y 2001, se lanza a una brutal represión contra todo aquel que osa alzar la voz contra su poder. Ya en el año 2000 se estima que unas 25.000 personas habían muerto a causa de su afán por mantenerse en el poder y por beneficiar a su etnia, los zaghawa.

En 2004, el Parlamento de Chad, mayoritariamente controlado por el partido en el poder, aprueba la eliminación del límite de dos mandatos presidenciales para permitir que Déby siga al frente del Estado. En los años siguientes varias rebeliones están a punto de tumbarle, especialmente la de febrero de 2008 que llega a hacerse con el control de la capital y deja a Déby encerrado en su Palacio Presidencial, pero gracias al apoyo de Francia, que cuenta con tropas estacionadas en la capital chadiana, logra seguir en el puesto. En 2006 y 2012 gana con facilidad sendos comicios presidenciales considerados una auténtica farsa por la oposición, en concreto en estos últimos ganó con un 88,7% de los votos en la primera vuelta.

En Dakar

A Makaïla lo conocí hace meses en Dakar. Me impresionó su compromiso, su firmeza, su determinación a denunciar los abusos y asesinatos del régimen de Déby, al que calificó, sin dudar, de “mucho peor que el de Hissène Habré”. Entonces se estaba produciendo una serie de manifestaciones y huelgas en Yamena por la carestía de la vida y la congelación de los sueldos de los funcionarios desde hacía años, agitación que Makaïla consideraba podía ser precursora de un verdadero cambio político.

Sin embargo, ya entonces él intuía que la inestabilidad en Malí y un más que posible apoyo chadiano a la intervención en este país podía jugar en contra de la oposición y reforzar a Déby. Y así ha sido. La decisiva participación de los soldados de Chad en apoyo del Ejército francés en la campaña militar en el norte de Malí, en la que han muerto oficialmente una treintena de hombres y han sido objeto de atentados terroristas, ha dado alas a Déby en el contexto africano e internacional. No en vano, un reciente comunicado de la Unión Africana (UA) sobre la crisis en Chad, en el que muy diplomáticamente llamaba al diálogo y a la estabilidad, ponía el acento en el compromiso chadiano con la Misión de Estabilización de Malí (Misma).

En línea con lo que piensa la oposición y el exilio chadiano, Makaïla Nguebla asegura que “nadie en Chad se puede permitir dar un golpe de estado contra Déby salvo sus próximos, los miembros de su clan, porque son ellos quienes controlan las armas y el poder. Este intento de golpe de estado no es sino una nueva cortina de humo para aplastar a la oposición”, dice.

Logro contactar con el bloguero y periodista que está ahora en Guinea Conakry, tras su expulsión de Senegal, el país al que eligió venir en 2005 porque admiraba su libertad de prensa y su respeto a los Derechos Humanos. La explicación del portavoz del Ejecutivo de Macky Sall, Abdou Latif Coulibaly, acerca de la expulsión de Makaïla deja bastante que desear: “Él estaba en territorio senegales de forma irregular, pero su presencia era tolerada bajo ciertas condiciones, como abstenerse de hacer ciertas declaraciones”. O sea, que ha sido expulsado por un delito de opinión, algo grave para una democracia como la senegalesa.

Desde Conakry, el bloguero teme por su vida. “Este país no es seguro, de hecho, creo que ya no estoy a salvo en África”. Decenas de asociaciones y organizaciones de Derechos Humanos, sobre todo de Senegal donde Makaïla era muy activo, han iniciado ya una campaña para el regreso del periodista a Dakar o su traslado a un lugar realmente seguro, un lugar a donde la alargada mano del protegido y antidemocrático régimen de Idriss Déby no pueda llegar.

Fuente: Makaïla y la alargada mano de Idriss Déby

Autor: José Naranjo

Los votantes dicen...
  1. Información Bitacoras.com…

    Valora en Bitacoras.com: El pasado 6 de mayo, Makaïla Nguebla, bloguero y periodista chadiano residente en Senegal, recibe una llamada en su teléfono móvil. Es el comisario Ndiaye, responsable de la Dirección de Vigilancia del Territorio (DST),……

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>