Subversion Repositories eFlore/Applications.del

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1746 → Rev 1747

/trunk/scripts/tb_del.sh
New file
0,0 → 1,65
#!/bin/sh
 
### BEGIN INIT INFO
# Provides: tb_del
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $all
# Should-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop scripts maintenance et emails DEL
# Description: Start/stop les scripts de maintenance et d'envoie d'emails de DEL.
### END INIT INFO
 
# Script de lancement des scripts d'identiPlante et pictoFlora.
# À placer dans /etc/init.d/ puis à lancer : service tb_del start
# Log :
# - 2011-04-07 [Aurélien Peronnet] : création de lancement des scripts d'identiPlante et pictoFlora.
#
case "$1" in
 
start)
 
echo "Demarrage de del_mail_recapitulatif_obs :"
nohup /usr/local/sbin/del_mail_recapitulatif_obs 1>/dev/null 2>/dev/null &
 
echo "Demarrage de del_mail_recapitulatif_commentaires :"
nohup /usr/local/sbin/del_mail_recapitulatif_commentaires 1>/dev/null 2>/dev/null &
 
;;
 
stop)
 
echo "Arret de del_mail_recapitulatif_obs"
PID=`ps -eaf | grep del_mail_recapitulatif_obs | grep -v grep | tr -s ' ' | cut -d' ' -f2 | head -n1`
kill -9 ${PID}
 
echo "Arret de del_mail_recapitulatif_commentaires"
PID=`ps -eaf | grep del_mail_recapitulatif_commentaires | grep -v grep | tr -s ' ' | cut -d' ' -f2 | head -n1`
kill -9 ${PID}
 
;;
 
status)
 
echo -n "Voici les PID du processus del_mail_recapitulatif_obs :"
PID=`ps -eaf | grep del_mail_recapitulatif_obs | grep -v grep | tr -s ' ' | cut -d' ' -f2 | head -n1`
echo ${PID}
 
echo -n "Voici les PID du processus del_mail_recapitulatif_commentaires :"
PID=`ps -eaf | grep del_mail_recapitulatif_commentaires | grep -v grep | tr -s ' ' | cut -d' ' -f2 | head -n1`
echo ${PID}
 
;;
 
 
*)
 
echo "Usage: {start|stop|status}"
 
exit 1
 
;;
 
esac
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property
Added: svn:executable
+*
\ No newline at end of property
/trunk/scripts/modules/adeterminer/Adeterminer.php
15,7 → 15,8
class Adeterminer extends DelScript {
 
protected $parametres_autorises = array(
'-t' => array(false, true, 'pour tester le script indiquer votre e-mail'));
'-t' => array(false, true, 'Indiquez votre e-mail pour tester le script.'),
'-d' => array(false, true, "Indiquer une date au format yyyy-mm-dd pour renvoyer l'alerte de cette date."));
 
public function executer() {
try {
/trunk/scripts/modules/adeterminer/AlerteMailADeterminer.php
20,6 → 20,8
private $recapitulatifAdmin = [];
private $messageRecapitulatif = null;
 
private $dateRenvoi = null;
 
private $observations_concernees = array();
private $messageHtml = null;
private $messageTxt = null;
32,6 → 34,7
public function executer() {
try {
$this->verifierModeUtilisation();
$this->verifierDateRenvoi();
$observations = $this->chargerObsADeterminer();
if (!empty($observations)) {
$this->formaterObservations($observations);
55,8 → 58,21
}
}
 
private function verifierDateRenvoi() {
$dateRenvoi = $this->conteneur->getParametre('d');
if ($dateRenvoi) {
if (preg_match('/^[0-9]{4}-[0-1][0-9]-[0-3][0-9]$/', $dateRenvoi)) {
$this->dateRenvoi = $dateRenvoi;
} else {
$msg = "Veuillez indiquer une date au format yyyy-mm-dd valide à la suite du paramètre «-d».";
new Exception($msg);
}
}
}
 
protected function chargerObsADeterminer() {
//TODO: optimiser la requête si beaucoup de mails sont envoyés
$date = ($this->dateRenvoi == null) ? 'CURDATE()' : "'$this->dateRenvoi'";
$requete = "SELECT * ".
"FROM del_obs_image AS doi ".
" INNER JOIN del_observation AS do ON doi.id_observation = do.id_observation ".
65,9 → 81,9
' OR nom_sel IS NULL OR nom_sel = "" '.
' OR nom_ret IS NULL OR nom_ret = "") '.
' AND ('.
' do.date_transmission > DATE_SUB(CURDATE(), INTERVAL 1 DAY) '.
' OR do.date_creation > DATE_SUB(CURDATE(), INTERVAL 1 DAY) '.
' OR do.date_modification > DATE_SUB(CURDATE(), INTERVAL 1 DAY) '.
" TO_DAYS($date) - TO_DAYS(do.date_transmission) IN (0, 1) ".
" OR TO_DAYS($date) - TO_DAYS(do.date_creation) IN (0, 1) ".
" OR TO_DAYS($date) - TO_DAYS(do.date_modification) IN (0, 1) ".
' ) '.
"ORDER BY do.id_observation ";
$obs = $this->conteneur->getBdd()->recupererTous($requete);
162,8 → 178,8
 
private function envoyerMessageAuxUtilisateurs() {
$utilisateurs = $this->obtenirDestinatairesMailsRecapitulatif();
foreach ($utilisateurs as $utilisateur) {
$this->envoyerMessage($utilisateur['id_utilisateur']);
foreach ($utilisateurs as $idUtilisateur) {
$this->envoyerMessage($idUtilisateur);
}
}
 
191,10 → 207,13
*/
private function envoyerMessage($id_destinataire) {
$url = sprintf($this->conteneur->getParametre('url_service_messagerie'), $id_destinataire);
$dateFmt = $this->formaterDateCourante();
$sujet = sprintf($this->conteneur->getParametre('titre_message_recapitulatif_obs'), $dateFmt);
 
$donnees = array(
'utilisateur_courriel' => $this->conteneur->getParametre('adresse_expediteur_recapitulatif'),
'format' => 'html',
'sujet' => $this->conteneur->getParametre('titre_message_recapitulatif_obs'),
'sujet' => $sujet,
'message' => $this->messageHtml,
'message_txt' => $this->messageTxt
);
203,6 → 222,12
$clientRest->modifier($url, $donnees);
}
 
private function formaterDateCourante() {
$date = ($this->dateRenvoi == null) ? time() : strtotime($this->dateRenvoi);
$dateFmt = date('d-m-Y', $date);
return $dateFmt;
}
 
/** La liste détermination n'étant pas un membre de tela botanica,
* on lui envoie un message directement
* @return boolean true ou false suivant le succès ou non de l'envoi
209,7 → 234,8
*/
private function envoyerMessageListeDetermination() {
$destinataires = $this->conteneur->getParametre('adresse_destinataire_recapitulatif_determination');
$sujet = $this->conteneur->getParametre('titre_message_recapitulatif_obs');
$dateFmt = $this->formaterDateCourante();
$sujet = sprintf($this->conteneur->getParametre('titre_message_recapitulatif_obs'), $dateFmt);
 
$messagerie = $this->conteneur->getMessagerie();
$envoieStatut = $messagerie->envoyerHtml($destinataires, $sujet, $this->messageHtml, $this->messageTxt);
218,7 → 244,8
 
private function envoyerMessageRecap() {
$msgRecap = $this->obtenirMessageRecap();
$sujet = "IdentiPlante : récapitulatif envoies alertes à déterminer";
$dateFmt = $this->formaterDateCourante();
$sujet = "IdentiPlante : récapitulatif envoies alertes à déterminer du $dateFmt";
$messagerie = $this->conteneur->getMessagerie();
$destinataire = $this->conteneur->getParametre('email_recap');
$messagerie->envoyerTxt($destinataire, $sujet, $msgRecap);
275,15 → 302,16
private function envoyerMessageTesteur() {
if ($this->testeurCourriel != null) {
$messagerie = $this->conteneur->getMessagerie();
$dateFmt = $this->formaterDateCourante();
 
$sujet = "TESTEUR : récapitulatif envoies alertes à déterminer";
$sujet = "TESTEUR : récapitulatif envoies alertes à déterminer - $dateFmt";
$msgRecap = $this->obtenirMessageRecap();
$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $msgRecap);
 
$sujet = "TESTEUR : exemple message HTML - alerte à déterminer";
$sujet = "TESTEUR : exemple message HTML - alerte à déterminer - $dateFmt";
$messagerie->envoyerHtml($this->testeurCourriel, $sujet, $this->messageHtml, $this->messageTxt);
 
$sujet = "TESTEUR : exemple message TXT - alerte à déterminer";
$sujet = "TESTEUR : exemple message TXT - alerte à déterminer - $dateFmt";
$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $this->messageTxt);
}
}
/trunk/scripts/modules/adeterminer/del_mail_recapitulatif_obs.sh
New file
0,0 → 1,20
#!/bin/bash
#
# /etc/init.d/del_mail_recapitulatif : traitement des mails récapitulatifs d'identiplante
# - 2014-03-20 [Jean-Pascal Milcent] : ajout gestion de l'heure d'execution
# - 2012-07-03 [Aurélien Peronnet] : création
#
while true
do
HEURE=$(date "+%H")
# Si nous sommes à 18h nous lançon le script
if [$HEURE -eq 18 ] ; then
logger "Lancement script del::alerteMailADeterminer"
sudo -u apitela /usr/local/bin/php-cli-55 -f /home/apitela/www/scripts/del/cli.php adeterminer -a alerteMail
logger "Arret script del::alerteMailaDeterminer"
sleep 1d
else
# Tentative toutes les heures jusqu'à la bonne heure
sleep 1h
fi
done
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property
Added: svn:executable
+*
\ No newline at end of property
/trunk/scripts/modules/commentaires/AlerteMailCommentaires.php
20,6 → 20,8
private $recapitulatifAdmin = [];
private $messageRecapitulatif = null;
 
private $dateRenvoi = null;
 
private $observations_concernees = array();
private $correspondance_id_obs_auteurs = array();
private $utilisateursInfos = array();
31,6 → 33,7
public function executer() {
try {
$this->verifierModeUtilisation();
$this->verifierDateRenvoi();
$observations = $this->chargerObservationsCommentees();
if (!empty($observations)) {
$this->formaterObservations($observations);
55,9 → 58,23
}
}
 
private function verifierDateRenvoi() {
$dateRenvoi = $this->conteneur->getParametre('d');
if ($dateRenvoi) {
if (preg_match('/^[0-9]{4}-[0-1][0-9]-[0-3][0-9]$/', $dateRenvoi)) {
$this->dateRenvoi = $dateRenvoi;
} else {
$msg = "Veuillez indiquer une date au format yyyy-mm-dd valide à la suite du paramètre «-d».";
new Exception($msg);
}
}
}
 
private function chargerObservationsCommentees() {
// Seuls les utilisateurs ayant explicitement refusé le mail sont ignorés
$preferences = $this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%');
$date = ($this->dateRenvoi == null) ? 'NOW()' : "'$this->dateRenvoi'";
 
//TODO: optimiser la requête si beaucoup de mails sont envoyés
$requete = "SELECT * FROM del_observation AS do ".
"WHERE do.id_observation IN ".
74,7 → 91,7
" AND dc.ce_utilisateur = dob.ce_utilisateur ".
" AND dc.ce_observation = dob.id_observation ".
") ".
"AND TO_DAYS(NOW()) - TO_DAYS(dc.date) <= 1 ".
"AND TO_DAYS($date) - TO_DAYS(dc.date) IN (0, 1) ".
") ".
"AND do.ce_utilisateur NOT IN ".
"( ".
157,6 → 174,8
 
protected function chargerCommentairesDuJour() {
$preferences = $this->conteneur->getBdd()->proteger('%"mail_notification_mes_obs":"0"%');
$date = ($this->dateRenvoi == null) ? 'NOW()' : "'$this->dateRenvoi'";
 
// TODO: optimiser la requête si beaucoup de mails sont envoyés
$requete = "SELECT * ".
"FROM del_commentaire AS dc ".
175,7 → 194,7
" FROM del_utilisateur_infos ".
" WHERE preferences LIKE $preferences ".
") ".
"AND TO_DAYS(NOW()) - TO_DAYS(dc.date) <= 1 ".
"AND TO_DAYS($date) - TO_DAYS(dc.date) IN (0, 1) ".
"ORDER BY dc.ce_observation";
$commentaires = $this->conteneur->getBdd()->recupererTous($requete);
return $commentaires;
244,10 → 263,12
 
private function envoyerMessage($messageHtml, $messageTxt, $id_destinataire) {
$url = sprintf($this->conteneur->getParametre('url_service_messagerie'), $id_destinataire);
$dateFmt = $this->formaterDateCourante();
$sujet = sprintf($this->conteneur->getParametre('titre_message_recapitulatif'), $dateFmt);
$donnees = array(
'utilisateur_courriel' => $this->conteneur->getParametre('adresse_expediteur_recapitulatif'),
'format' => 'html',
'sujet' => $this->conteneur->getParametre('titre_message_recapitulatif'),
'sujet' => $sujet,
'message' => $messageHtml,
'message_txt' => $messageTxt
);
256,9 → 277,16
$clientRest->modifier($url, $donnees);
}
 
private function formaterDateCourante() {
$date = ($this->dateRenvoi == null) ? time() : strtotime($this->dateRenvoi);
$dateFmt = date('d-m-Y', $date);
return $dateFmt;
}
 
private function envoyerMessageRecap() {
$msgRecap = $this->obtenirMessageRecap();
$sujet = "IdentiPlante : récapitulatif envoies alertes commentaires";
$dateFmt = $this->formaterDateCourante();
$sujet = "IdentiPlante : récapitulatif envoies alertes commentaires du $dateFmt";
$messagerie = $this->conteneur->getMessagerie();
$destinataire = $this->conteneur->getParametre('email_recap');
$messagerie->envoyerTxt($destinataire, $sujet, $msgRecap);
285,16 → 313,17
private function envoyerMessagesTesteur() {
if ($this->testeurCourriel != null) {
$messagerie = $this->conteneur->getMessagerie();
$dateFmt = $this->formaterDateCourante();
 
$sujet = "TESTEUR : récapitulatif envoies alertes commentaires";
$sujet = "TESTEUR : récapitulatif envoies alertes commentaires - $dateFmt";
$msgRecap = $this->obtenirMessageRecap();
$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $msgRecap);
 
$message = $this->recapitulatifAdmin[array_rand($this->recapitulatifAdmin)];
$sujet = "TESTEUR : exemple message HTML - alerte commentaire";
$sujet = "TESTEUR : exemple message HTML - alerte commentaire - $dateFmt";
$messagerie->envoyerHtml($this->testeurCourriel, $sujet, $message['html'], $message['txt']);
 
$sujet = "TESTEUR : exemple message TXT - alerte commentaire";
$sujet = "TESTEUR : exemple message TXT - alerte commentaire - $dateFmt";
$messagerie->envoyerTxt($this->testeurCourriel, $sujet, $message['txt']);
}
}
/trunk/scripts/modules/commentaires/Commentaires.php
15,7 → 15,8
class Commentaires extends DelScript {
 
protected $parametres_autorises = array(
'-t' => array(false, true, 'pour tester le script indiquer votre e-mail'));
'-t' => array(false, true, 'Indiquez votre e-mail pour tester le script.'),
'-d' => array(false, true, "Indiquer une date au format yyyy-mm-dd pour renvoyer l'alerte de cette date."));
 
public function executer() {
try {
/trunk/scripts/modules/commentaires/del_mail_recapitulatif_commentaires.sh
New file
0,0 → 1,20
#!/bin/bash
#
# /etc/init.d/del_mail_recapitulatif : traitement des mails récapitulatifs d'identiplante
# - 2014-03-20 [Jean-Pascal Milcent] : ajout gestion de l'heure d'execution
# - 2012-07-03 [Aurélien Peronnet] : on
#
while true
do
HEURE=$(date "+%H")
# Si nous sommes à 18h nous lançons le script
if [$HEURE -eq 18 ] ; then
logger "Lancement script del::alerteMailCommentaires"
sudo -u apitela /usr/local/bin/php-cli-55 -f /home/apitela/www/scripts/del/cli.php commentaires -a alerteMail
logger "Arret script referentiel::alerteMailCommentaires"
sleep 1d
else
# Tentative toutes les heures jusqu'à la bonne heure
sleep 1h
fi
done
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property
Added: svn:executable
+*
\ No newline at end of property
/trunk/scripts/configurations/config.defaut.ini
74,9 → 74,9
adresse_destinataire_recapitulatif_determination = "determination_plantes@tela-botanica.org"
 
; Titre du message de récapitulatif d'identiplante
titre_message_recapitulatif = "Récapitulatif des derniers commentaires et propositions";
titre_message_recapitulatif = "Récapitulatif des derniers commentaires et propositions du %s";
; titre du message de récapitulatif des obs à déterminer
titre_message_recapitulatif_obs = "Récapitulatif des dernières observations à déterminer"
titre_message_recapitulatif_obs = "Récapitulatif des dernières observations à déterminer du %s"
 
; +------------------------------------------------------------------------------------------------------+
; Espaces de noms
/trunk/scripts/.
Property changes:
Modified: svn:mergeinfo
Merged /branches/v1.3-beryllium/scripts:r1741-1746