Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Añadir algunas capacidades a un tipo de usuario (rol) en WordPress

Imago voragine.net
[actualizado el ] • Por
WordPress dispone de cinco tipos de usuario, cinco roles, con capacidades diferentes. Hay veces que ninguno de estos tipos se ajusta exáctamente al uso que un usuario hará de una página con WordPress. En estos casos podemos añadir o eliminar capacidades o permisos a uno de los cinco tipos de usuario, para adaptarlo a nuestras necesidades.

Entendiendo el sistema de paginación de WordPress: paginando el archivo, los resultados de búsqueda o un custom post type

Imago voragine.net
• Por

La función que ofrece WordPress para introducir una barra con enlaces a las diferentes páginas de resultados es paginate_links, es decir, un paginador de resultados del tipo "Anterior, 1, 2, 3, ..., Siguiente".

Esta función se encarga de construir las URLs para cada página de resultados, y es eficaz, salvo si entran en juego otros parámetros en la URL, por ejemplo s si queremos paginar los resultados de una búsqueda o post_type si estamos paginando un loop para un post type diferente a post. En estos casos, tendremos que ayudar a paginate_links a construir las URLs.

Para ello tenemos que darle a WordPress la siguiente información:

  • El loop a paginar.
  • El número total de páginas, en función de la cantidad de posts en el loop y la página actual en la que se está.
  • Los parámetros de la URL que queremos mantener en los enlaces a las distintas páginas.

La responsabilidad de los emisores de Open Badges

En El Diario, Pau Llop entrevista a Erin Knight, responsable de los Open Badge de la Mozilla Foundation. Un fragmento interesantes sobre la responsabilidad de los emisores de Open Badge, a tener en cuenta en Ciudad Escuela:

Mediante el uso de una infraestructura compartida, podemos verificar fácilmente las insignias para asegurarnos de que un emisor emitió realmente una insignia concreta y que no fue simplemente copiada del sitio o perfil de otro usuario con esa misma insignia. Así que nuestra tecnología incluye de serie una validación de bajo nivel. Sin embargo, la insignia no tiene sentido sin algo detrás de ella: aprendizaje, logros reales y alguna forma de evaluación. Cada emisor de insignias debe diseñar buenas experiencias de aprendizaje y evaluaciones sobre las que se puedan emitir ‘badges’, así que está en la mano del emisor poner controles y equilibrios para frenar las trampas y garantizar que sus insignias son representativas de lo que dicen ser.

Erin Knight: «Las insignias virtuales serán más eficaces que el CV para encontrar empleo», blog Colaboratorio de El Diario.

Me parece muy importante esta concepción de validación «de bajo nivel» de la que habla Erin. La tecnología Open Badge es segura por cómo está diseñada y construida, con un sistema de validación de las insignias que pasa por el servidor y el dominio del emisor. Erin enfatiza en la entrevista que la validez y la autenticidad de los badges depende en última instancia de la calidad del programa educativo y de los mecanismos de evaluación del emisor, que es en última instancia la validación «de alto nivel».

Cómo obtener y mostrar la descripción, o caption, de las imágenes destacadas (post thumbnail) en WordPress

Imago voragine.net
• Por
WordPress ofrece la posibilidad de asignar una imagen destacada, post thumbnail en el argot de WordPress, a cada post, lo cual da mucha flexibilidad a la hora de mostrar el contenido y esta imagen de manera independiente. Para manejar las imágenes destacadas hay distintas funciones, pero ninguna de ellas permite obtener la descripción, o caption, que podemos añadir a la imagen en el administrador de WordPress. Para obtener la descripción, y otras informaciones de una imagen destacada, tenemos que recurrir a la función genérica get_post.

Función PHP para eliminar parámetros de una URL

Imago voragine.net
[actualizado el ] • Por Enlace permanente

En el hilo de comentarios de la entrada PHP Function: Remove a Query String Key, Value del blog de David Walsh hay un buen puñado de funciones que permiten eliminar parámetros de una URL. Una de ellas me parece una solución más sencilla que la propone el propio David.

La he modificado mínimamente para que ofrezca la posibilidad de eliminar más de un parámetro:

// Elimina los parámetros suministrador mediante la array $keys de la URL $url
function remove_url_query_args($url,$keys=array()) {
        $url_parts = parse_url($url);
        if(empty($url_parts['query'])) return $url;
                
        parse_str($url_parts['query'], $result_array);
        foreach ( $keys as $key ) { unset($result_array[$key]); }
        $url_parts['query'] = http_build_query($result_array);
        $url = (isset($url_parts["scheme"])?$url_parts["scheme"]."://":"").
                (isset($url_parts["user"])?$url_parts["user"].":":"").
                (isset($url_parts["pass"])?$url_parts["pass"]."@":"").
                (isset($url_parts["host"])?$url_parts["host"]:"").
                (isset($url_parts["port"])?":".$url_parts["port"]:"").
                (isset($url_parts["path"])?$url_parts["path"]:"").
                (isset($url_parts["query"])?"?".$url_parts["query"]:"").
                (isset($url_parts["fragment"])?"#".$url_parts["fragment"]:"");
        return $url;
}

Por ejemplo:

$keys = array("param1","param3");
$url = "http://example.org/?param1=value1&param2=value2&param3=value3";
echo remove_url_query_args($url,$keys);
// output: http://example.org/?param2=value2

Función JavaScript para detectar si una página web está siendo visitada desde un dispositivo móvil

Imago voragine.net
[actualizado el ] • Por Enlace permanente

Buceando en el código del theme Hero de WordPress, desarrollado por ThemeTrust he encontrado una función JavaScript muy sencillita para detectar si una página web está siendo visitada desde un dispositivo móvil.

No es completa, pero sí cubre los principales dispositivos móviles:

function isMobile(){
    return (
        (navigator.userAgent.match(/Android/i)) ||
        (navigator.userAgent.match(/webOS/i)) ||
        (navigator.userAgent.match(/iPhone/i)) ||
        (navigator.userAgent.match(/iPod/i)) ||
        (navigator.userAgent.match(/iPad/i)) ||
        (navigator.userAgent.match(/BlackBerry/i))
    );
}

Sobre el juicio de las principales discográficas mundiales contra Pablo Soto

David Bravo, abogado defensor de Pablo Soto, escribe un artículo en El Diario en el que cuenta el milagro que ha sido ganar un juicio a las principales discográficas mundiales:

El toque de atención que me dejó claro que ellos jugaban en otra liga fue cuando el mismo día del juicio, EEUU aprovechó para meter presión a España diciendo que éramos el país más pirata, obviamente para crear un clima favorable a la estimación de la demanda contra Pablo. Los medios de comunicación, expertos en fingir que han picado ingenuamente un anzuelo, hicieron la relación que se demandaba de ellos y en la misma noticia en la que hablaban de la queja de EEUU hablaban también de que, precisamente, y fíjense qué casualidad, ese mismo día se juzgaba en España a un importante pirata.

Nos hemos encontrado entre las toneladas de folios con un escrito presentado por la demandante, entiendo que por error, donde tras cada pregunta a sus peritos aparecían entre paréntesis las respuestas que debían dar. Nos hemos asustado al ver que el juez que iba a resolver el recurso impartía clases en un master coordinado por el abogado contrario y en el que alguna de las cuatro discográficas demandantes era empresa colaboradora. Hemos visto cómo periódicos como El País aprovecharon la condena a The Pirate Bay para decir justo el día que empezaba el juicio a Pablo que su caso era el The Pirate Bay español.

Ahora que todo ha terminado, David Bravo.

El reconocimiento y los derechos de uso de material de terceros en las redes sociales

Imago voragine.net
• Por
Hay dos prácticas que veo a diario en las principales redes sociales: usar imágenes ajenas sin reconocer al autor y no decir a través de quién se ha llegado a una información concreta. En la primera creo que tiene mucho que ver el funcionamiento de las redes en cuestión: para que una imagen aparezca dentro de la información que se publica, hay que subir la foto a nuestra cuenta, no basta con enlazar al sitio donde la hemos encontrado. Esto hace que luego no se enlace al sitio donde la encontramos. La segunda se produce cuando se ha llegado a una información a través de algún contacto que se tiene en una red social, digamos Twitter, y se decide compartir esa misma información en otra, digamos Facebook. En este caso, cada red social funciona como un universo paralelo: en Twitter funciona la fórmula vía o v/, en Facebook el share que lleva implícito el reconocimiento. Pero algo encontrado en Twitter que se comparte en Facebook, o a la inversa, no tiene un protocolo tan claro de reconocimiento, a veces porque la fuente en Twitter no está en nuestros contactos de Facebook o no está en Facebook directamente. Ambas pueden considerarse como malas prácticas por la ausencia de reconocimiento hacia las fuentes de información. Sin entrar a valorar la gravedad del asunto, esta práctica me hace plantearme dos preguntas:

Cómo hacer una petición POST a un servidor usando cURL en un script PHP

Imago voragine.net
[actualizado el ] • Por Enlace permanente

cURL es muy útil para comunicarse con muchas APIs o más en general para automatizar peticiones y enviar datos entre servidores en internet. Cuando se usa cURL los datos se pueden enviar usando varios protocolos.

El siguiente snippet hace una petición a un servidor remoto enviando datos mediante el protocolo HTTP POST:

<?php
// abrimos la sesión cURL
$ch = curl_init();

// definimos la URL a la que hacemos la petición
curl_setopt($ch, CURLOPT_URL,"http://www.example.com/test.php");
// indicamos el tipo de petición: POST
curl_setopt($ch, CURLOPT_POST, TRUE);
// definimos cada uno de los parámetros
curl_setopt($ch, CURLOPT_POSTFIELDS, "postvar1=value1&postvar2=value2&postvar3=value3");

// recibimos la respuesta y la guardamos en una variable
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$remote_server_output = curl_exec ($ch);

// cerramos la sesión cURL
curl_close ($ch);

// hacemos lo que queramos con los datos recibidos
// por ejemplo, los mostramos
print_r($remote_server_output);
?>

Antes de poder usar cURL hay que asegurarse que está instalado ;) Si no lo está, se instala y se reinicia el servidor web:

apt-get install php-curl
service apache2 restart

Copyright trolls

Se les conoce como copyright trolls y una parte importante de su negocio consiste en demandar a particulares, con el soporte de una potente estructura de abogados detrás: los particulares prefieren llegar a un acuerdo económico que enfangarse en un proceso legal.

Por ejemplo, la empresa Malibu Media, una productora de vídeos eróticos para internet, ha interpuesto el 38% de las demandas por incumplimiento de copyright en Estados Unidos en lo que va de 2014. Desde que empezó a demandar, allá por febrero de 2012, solo un caso ha llegado a juicio, el resto han sido arreglos económicos entre particulares y Malibu Media.

One federal judge has compared its lawsuits to an «extortion scheme» writing that many defendants, whether they committed copyright infringement or not, would rather settle than face the costs and potential embarrassment of fighting their cases. It is hard to see why anyone facing such a suit would choose not to settle: hiring a lawyer costs more than settling, and damages are exponentially higher in the event of a loss at trial. Plus, no one wants to be publicly accused of stealing pornography. To avoid embarrassment, many defendants may choose to settle before Malibu Media names them in a complaint.

The Biggest Filer of Copyright Lawsuits? This Erotica Web Site, The New Yorker.