/** * 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 ‘libertad’ de un pueblo entre rejasSesiónDeControl.com
Arrow

La ‘libertad’ de un pueblo


0
Yorokobu

Este artículo ha sido publicado en Yorokobu, revista sobre innovación, inspiración, tendencias, emprendedores, creatividad y las cosas positivas que ocurren en el mundo y nadie cuenta.


Escrito el 26 de febrero de 2013 a las 10:33 | Clasificado en Latinoamérica

Nelisa, que prefiere no dar su nombre verdadero, prepara la comida para su hija, su marido y su hermano en un pequeño fogón que tiene a lado de la cama. Hoy toca arroz y pollo. No la servirá hasta que no regrese su esposo, que ha salido a comprar algo en una de las muchas tiendecitas del lugar. No puede haber ido muy lejos.

La ‘libertad’ de un pueblo entre rejas.
La ‘libertad’ de un pueblo entre rejas.

Quizás se haya retrasado jugando una partida de billar, buscando al rentista para pagarle los 250 bolivianos (30 euros) que pagan al mes por el cuartito donde habitan o haciendo unas fotocopias en la reprografía. Ahora, a plena luz, no teme que se haya metido en ningún lío, porque las calles del lugar en el que viven están a estas horas llenas de niños jugando, gente charlando y guardias de seguridad uniformados. Estos últimos, no es que sean guardias propiamente dichos, porque ni son funcionarios ni se sacaron nunca ningún título.

Los eligieron por su buena capacidad cada uno de los delegados de los siete módulos en los que se divide este peculiar barrio. Son presos. Como todos los que coexisten y rigen aquí. También como el marido y el hermano de Nelisa. Bienvenidos a esta singular ciudadela enclaustrada en pleno centro de La Paz (Bolivia). Estamos en la cárcel de San Pedro.

Sin duda el enclave no es un sitio en el que ninguna persona elegiría vivir por propia voluntad. Se trata de una prisión. Como en cualquier lugar del mundo, una estancia en la que se permanece obligado por haber cometido algún delito o a la espera de un juicio. Sin embargo, la singularidad de esta cárcel la hace distinta a cualquier otro penal del planeta. No solo porque dentro del perímetro de sus muros no entre jamás ningún policía, algo que ocurre en multitud de cárceles de países menos desarrollados, sino porque en esta, ese hecho no viene derivado de una situación interna de extrema violencia.

Aquí los funcionarios, hace ya 30 años, observaron que sin ellos vigilando en la prisión se había consolidado una sociedad organizada que contaba con responsables, administradores, seguridad, legislación propia, escuelas, áreas de ocio, comercios internos y hasta nuevas construcciones. El último paso fue permitir que las familias de los reos se trasladasen al interior de los muros para vivir con ellos.

Iver Mike Vargas, reo preventivo desde hace un año, va mostrando cada uno de los sectores en los que se divide este pueblo entre rejas con título de prisión de varones. Se esmera en explicar cada detalle a la espera de recibir la voluntad como pago al final del paseo. Mientras habla, mujeres cargadas de bolsas de compra, jóvenes jugando al fútbol, señores en terrazas, tenderos en mostradores, pacientes que esperan la cola del odontólogo, obreros trabajando, artesanos creando, vendedores de droga por menudeo, repartidores de comidas de los propios fast food internos y niños con juguetes se cruzan por medio.

De no ser por los altos muros que circundan el perímetro, uno podría sentirse en la hora punta de una urbe cualquiera. Un hecho que, aunque crea una extraña sensación de vida y movimiento, no deja de ser producto de la superpoblación que sufre este centro, que alberga a más de 2.300 personas a pesar de tener capacidad para 350.

A excepción de los niños y las mujeres, todos los que hay aquí son presos. No se libran de dicha condición ni los uniformados agentes de seguridad, ni los tenderos, ni los repartidores, ni los ayudantes del dentista, ni los de la abogada y los del médico (los tres últimos profesionales son el único personal externo que trabaja dentro).

También son reclusos los delegados de cada módulo, que se eligen como si fueran alcaldes y que se encargan de establecer el orden, recaudar impuestos, dar los permisos de nuevas obras, administrar los alquileres que cada uno de los reos tiene que pagar para vivir en San Pedro e incluso dirimir en comisión de delegados los juicios por problemas intrínsecos del centro (que ellos mismos resuelven, sentencian y hacen que se ejecute castigo por ellos).

Imagen de la cárcel boliviana de San Pedro (Fuente: Yorokobu)

Por existir, como pasa en todas las ciudades, en esta microurbe hay hasta mendigos. Aquellos que no pueden costearse el alquiler o los impuestos, o los que les echaron de su sector por mal comportamiento. Ese grupo de personas son el bajo escalafón social de este inaudito pueblo. Algunos de ellos duermen por las zonas y patios comunes o en una pequeña sala ocupada a la que ellos han llamado ‘Los Sin Sección’.

En conjunto todo conforma una aldea. Cada sector, un barrio repleto de cantinas, prestaciones y comercios que ni siquiera existen en muchos lugares de Bolivia y que aquí han levantado los propios reos. Una coca cola en Los Pinos, un pollo brouster en los Álamos, un partidillo de fútbol sala en Prefecturía…

En el Palmar, en Cancha, en San Martín, en Guanay… cada sección dispone de todos los servicios que pudiera tener un pequeño pueblo. En Cancha, un local luce un frondoso cartel que dice: Sauna. En la sección de al lado se encuentra la guardería. Vargas va explicando la historia de cada negocio y de vez en cuando habla de quién es cada uno de los tipos que se cruzan por el camino. Muchos quieren hablar un rato con los nuevos visitantes.

“Qué, caíste por drogas, ¿no?, como casi todo el mundo aquí”, pregunta un interno. “No, soy periodista”, le respondo

Entonces llegan las confesiones para el visitante externo. Los extranjeros se quejan de que los bolivianos no les dan buen trato; los trabajadores, de que ganan poco; presos que llevan la guardería para los 170 niños que viven en la prisión dicen que les faltan medios. Los presos enfermeros piden más espacio y más higiene para poder dar una buena atención y los más pobres… En esta cárcel los problemas sociales parecen estar por encima del problema de ser presos.

En Guanai, de una sala oscura, sale un hombre pidiendo tabaco. Dentro del barracón de donde se asoma hay otros 40 hombres que dormitan en altas literas por las que pagan cinco bolivianos la noche (50 céntimos de euro). Ellos son el escalón jerárquico inmediatamente superior a los mendigos en San Pedro. Para estos internos, la vida en esta prisión no es tan cómoda como podrían creer los que habitan en otros centros del país.

“Aquí hay gente rica que vive en habitaciones con televisión por cable, escritorio y bañera propia por las que pagan un alquiler mensual de hasta 1.000 dólares”, confiesan lo que los delegados no llegan a desvelar claramente. Tan reflejada es esta sociedad con la de fuera, que existe como en cualquier urbe un problema de clases marcada por la cantidad de dinero.

Imagen de la cárcel boliviana de San Pedro (Fuente: Yorokobu)

Algunos incluso compran sus espacios. La razón para hacerlo es, a veces, la consciencia del tiempo que van a pasar entre rejas. Otras veces, simplemente una inversión a recaudar el día que un juez les cante libertad y puedan transferir su cuartito -ninguno con puertas enrejadas- al siguiente interesado que venga.

El Estado se limita a poner una ración de comida al día y material para algunos talleres. A la directora del centro de San Pedro, Rita Oporto, que pocas veces ha tenido que pasar las rejas del penal, se la infiere más encantada con la vida organizada que han logrado sus internos que con los medios que provee la administración central para ellos.

Dice que con básicos logra cubrir las necesidades diarias de toda la comunidad interna “para que nadie se malmuera de hambre”, pero que por otro lado, entiende que la situación que se vive ahí dentro no deja de ser “inhumana” no tan solo por la carencia de libertad, sino porque la vejez del edificio (construido hace más de 100 años), sus desperfectos, y sobre todo la lentitud de la justicia en sacar de ahí a hombres que cumplen tan solo prisión preventiva, “agrava” todas las circunstancias. “Menos mal que a pesar de esas condiciones los propios internos han sacado lo que se ve hoy”.

Muchos de los reos (el 80% de población reclusa está régimen preventivo) han permanecido allí más de los tres años que marca el límite legal para que se celebre su juicio, algunos hasta más de cinco. “A la vez, las escasas ayudas económicas que se reciben del ministerio no son suficientes para mejorar la vida de estas personas, cuyo número se dispara, así que de algún modo la han tenido que mejorar ellos mismos.

“Lo van consiguiendo”, se consuela la directora. Se le escapa una leve sonrisa de orgullo de la boca: “La verdad es que han hecho una sociedad consolidada. Lo cierto es que lo único que les puedo pedir aún es que hagan transparentes las cuentas y los pagos que hacen ahí dentro. No quieren, pero habrá que volver a tratar el tema”, le resta importancia al asunto después de sopesar los hechos.

Imagen de la cárcel boliviana de San Pedro (Fuente: Yorokobu)

“La solución a la situación de las personas que no viven bien en San Pedro, por culpa de la sobrepoblación, no es levantar nuevas cárceles, sino agilizar la justicia de una vez por todas”, aprovecha a reivindicar. “Mi comunidad”, dice en posesivo, “pide lo mismo al gobierno que la propia administración del centro. Mientras, ellos siguen trabajando y organizándose internamente y rara vez nos dan trabajo a nosotros. Están muy bien coordinados y por sí solos sacan adelante San Pedro sin que ningún funcionario pise jamás su espacio interno”.

Nelisa mañana saldrá un rato a la calle para resolver unos asuntos. A ella no le pueden negar la salida porque está allí por propia voluntad. Antes de las 18:00, la hora de cierre, tendrá que estar otra vez entremuros si quiere pasar ahí la noche. Espera con ansias que a su marido y a su hermano les den pronto la libertad para que de una vez ellos también puedan acompañarla afuera. Pero por lo pronto, tendrá que ser ella quien viva adentro. “Al menos en San Pedro eso se puede hacer”, indica como un alivio. Por eso residirá allí al menos hasta que su hijo cumpla 7 años y la administración le obligue a mudarse fuera de la prisión. Para aquel entonces quizás a sus familiares ya les hayan juzgado y sean libres.

-¿Y si no?, le pregunto.

-Si les condenan y mi hijo aún no tiene los siete, ¿qué mejor que poder criarle aquí, en este sector? Es tranquilo, junto a su padre, mi hermano y yo misma, responde.

-Pero por estar aquí también te estás perdiendo tú una vida en libertad.

-Sí, es cierto, pero yo no quiero vivir lejos de mi familia. Es raro, pero para mí la libertad es estar cerca de ellos. Tú ya has visto cómo es esta cárcel, casi una ciudad. Yo, mientras ellos no salgan, me quedo a cuidarles aquí, que ahora es mi casa y al fin y al cabo no es una prisión como las demás del mundo. Puestos a estar encerrados, mejor que sea en la cárcel de San Pedro.

Imagen de la cárcel boliviana de San Pedro (Fuente: Yorokobu)

Imagen de la cárcel boliviana de San Pedro (Fuente: Yorokobu)

Imagen de la cárcel boliviana de San Pedro (Fuente: Yorokobu)

Imagen de la cárcel boliviana de San Pedro (Fuente: Yorokobu)

Imagen de la cárcel boliviana de San Pedro (Fuente: Yorokobu)

Imagen de la cárcel boliviana de San Pedro (Fuente: Yorokobu)

Imagen de la cárcel boliviana de San Pedro (Fuente: Yorokobu)

Fuente: La ‘libertad’ de un pueblo entre rejas

Autor: Jaled Abdelrahim

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>