Geek Notifications email dans le calendrier Owncloud

Continuant toujours sur mon objectif “se passer de Google mais avoir des applis open source équivalentes”, j’ai décidé de zapper Google Calendar. J’avais tout d’abord pensé au plugin calendar de mon Roundcube. Problème : ce dernier est plutôt “fermé”, il est sensé offrir un lien format ical pour l’intégrer à d’autres applications de calendrier, comme Thunderbird avec Lightning, mais je n’ai pas réussi à les faire fonctionner.

Je me suis alors rappelée que Owncloud propose une app “calendar”, qui elle supporte le protocole caldav. Après avoir installé DavDroid sur mon Fairphone, ô joie, mon calendrier Owncloud se synchronise avec mon smartphone ! Restait un petit inconvénient : pour le moment, pas de possibilité de notifications (email ou popup) dans ce calendrier. Il y a bien un patch en revue sur leur github, mais il est en cours depuis plus d’un an et toujours pas mergé… En attendant que cela soit intégré, j’ai donc concocté deux petits scripts bash qui permettent de faire des notifications email.

Récapitulatif des rv du jour :

#!/bin/bash
#Recuperation des ID des calendriers avec evenements ce jour

mysql_args="MYSQL CONNEXION INFO"
callist=$(mysql  ${mysql_args} -NBe "select distinct calendarid from oc_clndr_objects where date(startdate) = curdate();")

for cal in $callist
do
  userlist=$(mysql  ${mysql_args} -NBe "select distinct userid from oc_clndr_calendars where id = ${cal};")
  for user in $userlist
  do
    #email à contacter
    email=$(mysql ${mysql_args} -NBe "select configvalue from oc_preferences where  configkey ='email' and userid='${user}';")
    #message de recap
    tmpfile=$(mktemp recap.XXXXX)
    echo "Bonjour ${user}" > "${tmpfile}"
    echo >> "${tmpfile}"
    echo "Voici votre programme de la journée:" >> "${tmpfile}"
    mysql ${mysql_args} -te "select summary as Resume ,time(startdate) as Heure from oc_clndr_objects where date(startdate)=curdate() and calendarid=$cal;" | sed 's/\r//' >> "${tmpfile}"
    #envoi du mail
    mail -s "Récapitulatif du $(date +%F)" -r user@domain $email< "${tmpfile}"
    rm -f "$tmpfile"
    done
done

Rappel avant rendez-vous :

#!/bin/bash

#Recuperation des ID des events a venir
mysql_args="MYSQL CONNEXION INFO"

#Gestion du decalage horaire de 2h du calendrier owncloud
idlist=$(mysql ${mysql_args} -NBe "select id from oc_clndr_objects where timestampdiff(minute, NOW(), convert_tz(startdate, '+00:00', '+02:00')) BETWEEN 0 and 10;")

export LANG=fr_FR.UTF-8

for id in $idlist
do
  title=$(mysql ${mysql_args} -NBe "select summary from oc_clndr_objects where id=$id;")
  date=$(mysql ${mysql_args} -NBe "select date_add(startdate, interval 2 hour) from oc_clndr_objects where id=$id;")
  #email à contacter
  user=$(mysql ${mysql_args} -NBe "select oc_preferences.configvalue from oc_preferences join oc_clndr_calendars on oc_preferences.userid=oc_clndr_calendars.userid join oc_clndr_objects on oc_clndr_objects.calendarid = oc_clndr_calendars.id where configkey='email' and oc_clndr_objects.id=$id;")
  #email à envoyer
  echo -e "----------------\nTitre : $title\nDate: $date\n---------------\n"| mail -s "Rappel : $title" -r user@domain "$user"
done

Il doit y avoir moyen de faire mieux, surtout au niveau de la présentation du mail, alors, j'attends vos code review ! 😉

Comments are closed.