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 ! 😉