owncloud logo

Cómo publicar calendarios Owncloud en WordPress sin plugin premium

En este artículo explico como me las he ingeniado para importar calendarios Owncloud, versión 9, hacia un WordPress 4.5 en un sistema GNU/Linux, aunque es probable que funcione en otros sistemas. Ningún pluguin gratuito de WordPress importa calendarios de Owncloud y los renderiza a día de hoy. Hasta hace poco lo hacía el pluguin All-in-one Event Calendar, pero una incompatibilidad con las últimas actualizaciones de WordPress han dejado tal característica fuera de combate. Sin embargo, este pluguin sí puede importar archivos ICS desde otro lugar de manera periódica y renderizarlos.

Para importar los calendarios al mismo servidor donde tengo el WordPress, y mantenerlos actualizados y accesibles, he creado un script el cual Cron debe ejecutar cada cierto periodo de tiempo.

En el script que publico, los calendarios importados estarán en la carpeta /uploads/calendarios de la instalación del WordPress, catalogados por usuario y el mismo nombre de calendario del Owncloud. En el plugin All-in-one Event Calendar, será necesario especificar la url de cada calendario importado, por ejemplo:

http://miservidorwordpress.com/wp-contents/uploads/calendarios/usuario/calendario.ics

Cada calendario es importado por el script al que llamo importICS.sh

#!/bin/bash
importICS () {
    URL="http://"$DOMAIN
    dest_dir_root="/var/www/wordpress/wp­-content/uploads/calendarios/"
    dir=$dest_dir_root$CALUSER
    [[ -d $dir ]] || mkdir $dir
    wget ­O $dir/$CALENDAR".ics" ­­auth­-no­-challenge ­­http­-user=$CALUSER ­­http­-password=$CALPASS $URL"/remote.php/dav/calendars/"$CALUSER"/"$CALENDAR"?export";
}
file=$1
while IFS=, read CALUSER CALPASS CALENDAR DOMAIN
do
    importICS
done < $file

El script lee un archivo CSV, delimtiado por comas, del que toma los datos del usuario y calendario a importar del owncloud. Tiene un formato como este:

usuario1,123456,cal1,urlowncloudmidominio.com
usuario1,123456,cal2,urlowncloudmidominio.com
usuario2,123456,tres,urlowncloudmidominio.com

El primer campo es el nombre del usuario del calendario, el segundo su password, el tercero el nombre del calendario y el cuarto el dominio del owncloud.

Este archivo puede editarse fácilmente con una hoja de cálculo y exportarse como CSV delimitado por comas.

Cron ejecuta el script periódicamente para mantener los calendarios actualizados y, en condiciones normales, sólo habrá que hacer cambios esporádicos en el archivo CSV, pero por si se quiere actualizar los calendarios a mano, el script se ha de lanzar con un sólo parámetro: el nombre del archivo CSV. Por ejemplo:

$ sudo bash /opt/ICS/importICS.sh calendarios.csv

Por último, tan sólo hay que añadir la tarea al Cron para que ejecute el script con la frecuencia deseada y con ello ya tenemos los calendarios accesibles para el pluguin All-in-one Event Calendar.

No es imprescindible que los calendarios exportados desde Owncloud tengan como destino la misma máquina donde está instalado Worpress, sino que con algunas modificaciones al script pueden almacenarse en cualquier directorio al que tenga acceso el pluguin. También sería muy deseable añadir certificado SSL, aunque no lo he hecho pues ambas máquinas en mi caso se encuentran en el mismo segmento de red y no viajarán esos datos por Internet. Ténganse en cuenta también que en muchos casos los archivos ICS importados serán de acceso publico, por lo que el servidor donde estén alojados podría requerir configuraciones adicionales para limitar el acceso.

Espero que este artículo sea de utilidad.