Mejorando PHP en debian

Me he puesto a modificar una instalacion de debian que tengo para pruebas y resulta que me faltaban librerias de PHP. Estoy leyendo en Safari (soy socio de ACM y te lo “regalan”, por el pago de la cuota de socio, claro) el libro de O’Reilly de PHP y venía un consejo sobre cómo instalarlas, asi es que me he puesto con ello. He tenido que actualizar algunos paquetes:

# aptitude install php-pear

Upgrade the following packages:
libapache2-mod-php5 [5.2.6-5 (now) -> 5.2.6.dfsg.1-3 (testing)]
php5-gd [5.2.6-5 (now) -> 5.2.6.dfsg.1-3 (testing)]
php5-ldap [5.2.6-5 (now) -> 5.2.6.dfsg.1-3 (testing)]
php5-mcrypt [5.2.6-5 (now) -> 5.2.6.dfsg.1-3 (testing)]
php5-mysql [5.2.6-5 (now) -> 5.2.6.dfsg.1-3 (testing)]

Score is 400

Accept this solution? [Y/n/q/?]
The following NEW packages will be installed:
  php-pear php5-cli{a}
The following packages will be upgraded:
  libapache2-mod-php5 libpcre3 php5-common php5-gd php5-ldap php5-mcrypt
  php5-mysql
7 packages upgraded, 2 newly installed, 0 to remove and 143 not upgraded.

Consola de configuración de Gallery2

Gallery2 ofrece la posibilidad de realizar un conjunto de operaciones de mantenimiento desde una consola especial. Para acceder a ella, se utiliza una URL de la forma http://HOST/lib/support/index.php, y nos pedirá una clave de seguridad. Dicha clave se configura manualmente en el fichero config.php de la instalación de Gallery2.

Desde esta consola se pueden realizar las siguientes operaciones:

  • PHP configuration information
  • Cache Maintenance. Delete files from the Gallery data cache
  • Filesystem Permissions. Change the filesystem permissions of your Gallery and your storage folder.
  • GD. Information about your GD configuration
  • Import Database. Restore your Gallery database from an export that was made from the site administration maintenance screen or from the Database Backup step of the Gallery upgrader.
  • Reset User Password. Set new password for any user. Can be used to regain access to an administrator account when the “forgot password” feature cannot be used due to invalid/missing email address or other email problems.

Temas de Drupal 6

Estoy preparando la instalacion de un Drupal 6 para el Arxiu Històric del Poblenou, y voy encontrando algunos que son bastante majos.

Tengo algunos requisitos, como:

  • El tema tiene que ser sencillo y sin florituras.
  • Tamaño de letra grande y legible
  • Permitir personalizar los colores, para adaptarlo al estilo del AHPN.
  • Facil de personalizar, a ser posible desde la interfaz de Drupal, sin tener que tocar CSS o PHP.

Por ahora, no he encontrado mucho ;(

Ahora, solo toca probarlos, y ver por cual me decido.

Orden de los tags en Gallery2

He modificado unas funciones del modulo tags de Gallery2.

El caso es que la nube de tags se pinta mal: no están ordenados por relevancia, y solamente se utilizan los primeros elementos ordenados por nombre del tag, en lugar de por relevancia del tag.

Asi es que he cogido y he modificado el fichero gallery2/modules/tags/classes/TagsHelper.class para que la funcion que devuelve la lista de tags con sus pesos esté ahora ordenada por el numero de ocurrencias del tag y no por el nombre del tag.

El parche quedaria asi:

diff classes/TagsHelper.class.org classes/TagsHelper.class
398c398
<       ksort($tagList);

>       arsort($tagList);

Script para importar el indice del AHPN en Gallery2

* UTF8 en comentarios: las entradas del 1 al 2001 estan en formato iso8859 y las del 2002 en adelante estan en formato CP850.
Parece que algunos campos del Excel estan codificados en formato iso8859 y otros en CP850, por ejemplo, los titulos en CP850 y el resto en iso8859
* convertir los titulos a UTF8
1. extraer los titulos del fichero todo-a.txt, crear los ficheros todo-t (titulos) y todos-r (resto)
2. realizar la conversion iso8859 para los 2001 primeros y la CP850 para el resto
3. volver a pegar los campos del fichero todo-a.txt

El formato de los campos de texto (titulo, descripcion, keywords) para bulkupload debe ser UTF8. excepto para los nombres de los ficheros, que no hay que realizar ninguna conversion.

como convertir los nombres de los ficheros:
* los nombres de los ficheros están escritos en dos tipos de codificaciones: iso-8859 y CP850. Los primeros 2000 ficheros tienen nombres iso-8859 y el resto una mezcla de CP850 e iso-8859
* para que el script de bulk upload los procese correctamente los nombres de los ficheros no se deben modificar.
* Sin embargo, los nombres de los ficheros se utilizan en el campo Titulo, y deben convertirse correctamente a UTF8

Para convertirlos en iso-8859 se utiliza iconv

Se ha creado un fichero excel solo con las entradas del indice que estan digitalizadas (el campo suport contiene CD o DIGITAL).  Al intentar cuadrar el fichero excel y los nombres de los ficheros he encontrado algunas irregularidades:
* las entradas de registro 566,2474,2651,3039,3610,4454,5119,6383,8342-8344,9215-9218 no tienen fichero de imagen, pero en el fichero excel aparece como que sí la tienen.
* el registro 1047,1196,1203,1843 no figura como imagen en formato digital.

Recordar que hay dos entradas mal: buscar ^seva
Pegar los datos y los nombres de ficheros:
paste todo-a.txt l.txt > ll.txt

Para realizar la carga poco a poco.
# Separar el fichero completo en varios ficheros split -d -l 200 ll.txt carga.
# Añadir la cabecera a todos ellos:
for i in carga.*; do cat titulos $i > $i.txt; done

* Comillas y comillas dobles
sed -e ‘s/\”\”//g;s/\”//g’

El script de carga queda finalmente asi:

#!/bin/bash

function usage()
{
echo “$(basename $0): data-file list-file”

}

if [ “$#” -lt 2 ];
then
usage;
exit 0;
fi

# Fichero con los datos de las fotografias
DATAINPUT=$1
# Listado de los nombres de fichero de las fotografias
FILEINPUT=$2

FICHEROTITULOS=$DATAINPUT.t
FICHERORESTO=$DATAINPUT.r

OUTPUTTITULOS=$FICHEROTITULOS.out
OUTPUTRESTO=$FICHERORESTO.out

function extraer_campos()
# function extraer_campos( fichero, campos)
{
fichero=$1
campos=$2

cut -f”$campos” $fichero
}

function convertir()
# convertir( fichero, cod_origen, cod_destino, linea_inicio, linea_fin)
{

fichero=$1
cod_origen=$2
cod_destino=$3
linea_inicio=$4
linea_fin=$5

if [ “$linea_inicio” == “” ];
then
linea_inicio=0;
fi

if [ “$linea_fin” == “” ];
then
linea_fin=$(wc -l $fichero| cut -f1 -d’ ‘)
fi

distancia=$(($linea_fin – $linea_inicio));

head -n $linea_fin $fichero | tail -n $distancia \
| iconv -f $cod_origen -t $cod_destino

}

main()
{

# 1. cortar el fichero en titulos y resto
extraer_campos $DATAINPUT 1 > $FICHEROTITULOS
extraer_campos $DATAINPUT 2- > $FICHERORESTO

# 2. convertir titulos a UTF8
(convertir $FICHEROTITULOS latin1 utf8 0 453; convertir $FICHEROTITULOS CP850 utf8 453) > $OUTPUTTITULOS

# 3. convertir resto a UTF8
convertir $FICHERORESTO latin1 utf8 > $OUTPUTRESTO

# 4. pegar titulos resto y ficheros
# 4.1 eliminar comillas
paste $OUTPUTTITULOS $OUTPUTRESTO $FILEINPUT \
|  sed -e ‘s/\”\”//g;s/\”//g’
}

main