| Line 18... | Line 18... | 
          
            | 18 | 	//TODO: cette classe est en doublon avec du code de l'annuaire
 | 18 | 	//TODO: cette classe est en doublon avec du code de l'annuaire
 | 
          
            | 19 | 	// une fois passé à la dernière version du framework, il faudrait factoriser ces fonctions 
 | 19 | 	// une fois passé à la dernière version du framework, il faudrait factoriser ces fonctions 
 | 
          
            | 20 | 	// dans une lib commune accessible aux scripts et au code standard
 | 20 | 	// dans une lib commune accessible aux scripts et au code standard
 | 
          
            | 21 | 	const STATUT_A_TRAITER = 'a_traiter';
 | 21 | 	const STATUT_A_TRAITER = 'a_traiter';
 | 
          
            | 22 | 	const STATUT_EN_TRAITEMENT = 'en_traitement';
 | 22 | 	const STATUT_EN_TRAITEMENT = 'en_traitement';
 | 
          
            | - |   | 23 | 	const STATUT_EN_ECHEC = 'en_echec';
 | 
          
            | Line 23... | Line 24... | 
          
            | 23 | 	
 | 24 | 	
 | 
          
            | 24 | 	// Définit le délai au bout du quel on remet des mails en traitement à traiter
 | 25 | 	// Définit le délai au bout du quel on remet des mails en traitement à traiter
 | 
          
            | 25 | 	// au format (avec la syntaxe utilisée avec INTERVAL en SQL)
 | 26 | 	// au format (avec la syntaxe utilisée avec INTERVAL en SQL)
 | 
          
            | 26 | 	// http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html
 | 27 | 	// http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html
 | 
          
            | Line 48... | Line 49... | 
          
            | 48 | 		}
 | 49 | 		}
 | 
          
            | 49 | 	}
 | 50 | 	}
 | 
          
            | Line 50... | Line 51... | 
          
            | 50 | 	
 | 51 | 	
 | 
          
            | 51 | 	private function traiterMailsEnAttente() {
 | 52 | 	private function traiterMailsEnAttente() {
 | 
          
            | 52 | 		// Gaston Lagaffe
 | 53 | 		// Gaston Lagaffe
 | 
          
            | 53 | 		$mails_en_retard = $this->remettreATraiterMailsEnRetard();
 | 54 | 		$mails_en_retard = $this->traiterMailsEnRetard();
 | 
          
            | Line 54... | Line 55... | 
          
            | 54 | 		$mails_a_traiter = $this->obtenirMailsEnAttente();
 | 55 | 		$mails_a_traiter = $this->obtenirMailsEnAttente();
 | 
          
            | 55 | 		
 | 56 | 		
 | 
          
            | 56 | 		$retour = array();
 | 57 | 		$retour = array();
 | 
          
            | Line 97... | Line 98... | 
          
            | 97 | 		// TODO: Que faire si l'envoi de mail d'avertissement échoue également ?
 | 98 | 		// TODO: Que faire si l'envoi de mail d'avertissement échoue également ?
 | 
          
            | 98 | 		$envoi_avertissement = $this->envoyerMail(Config::get('adresse_mail_annuaire'),
 | 99 | 		$envoi_avertissement = $this->envoyerMail(Config::get('adresse_mail_annuaire'),
 | 
          
            | 99 | 				Config::get('mail_moderateur'),
 | 100 | 				Config::get('mail_moderateur'),
 | 
          
            | 100 | 				$sujet,
 | 101 | 				$sujet,
 | 
          
            | 101 | 				$corps_mail_echoue);
 | 102 | 				$corps_mail_echoue);
 | 
          
            | - |   | 103 | 		// echo pour que bash capte la sortie et stocke dans le log
 | 
          
            | - |   | 104 | 		echo 'Envoi du mail au moderateur pour signaler un echec '."--";
 | 
          
            | - |   | 105 | 		return $envoi_avertissement;
 | 
          
            | - |   | 106 | 	}
 | 
          
            | - |   | 107 | 	
 | 
          
            | - |   | 108 | 	private function avertirModerateurEchecTraitement($mails_en_echec) {
 | 
          
            | Line -... | Line 109... | 
          
            | - |   | 109 | 		
 | 
          
            | - |   | 110 | 		$ids_mails_en_echec = array();
 | 
          
            | - |   | 111 | 		foreach($mails_en_echec as $mail_echec) {
 | 
          
            | - |   | 112 | 			$ids_mails_en_echec[] = $mail_echec['adt_id'];
 | 
          
            | - |   | 113 | 		}
 | 
          
            | - |   | 114 | 	
 | 
          
            | - |   | 115 | 		$corps_mail_mal_traite = "Échec de traitement pour : ".implode(',', $ids_mails_en_echec)." depuis plus de ".self::DELAI_MAX_TRAITEMENT." <br />";
 | 
          
            | - |   | 116 | 		$sujet = "Un ou plusieurs mails sont en échec de traitement";
 | 
          
            | - |   | 117 | 			
 | 
          
            | - |   | 118 | 		$envoi_avertissement = $this->envoyerMail(Config::get('adresse_mail_annuaire'),
 | 
          
            | - |   | 119 | 				Config::get('mail_moderateur'),
 | 
          
            | - |   | 120 | 				$sujet,
 | 
          
            | - |   | 121 | 				$corps_mail_mal_traite);
 | 
          
            | - |   | 122 | 		
 | 
          
            | - |   | 123 | 		// echo pour que bash capte la sortie et stocke dans le log
 | 
          
            | 102 | 		
 | 124 | 		echo 'Envoi du mail au moderateur pour signaler un traitement en echec depuis trop longtemps '."--";
 | 
          
            | 103 | 		return $envoi_avertissement;
 | 125 | 		return $envoi_avertissement;
 | 
          
            | Line 104... | Line 126... | 
          
            | 104 | 	}
 | 126 | 	}
 | 
          
            | 105 | 	
 | 127 | 	
 | 
          
            | 106 | 	private function obtenirMailsEnAttente() {
 | 128 | 	private function obtenirMailsEnAttente() {
 | 
          
            | 107 | 		$requete = "SELECT * FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_A_TRAITER."' ";
 | - |   | 
          
            | - |   | 129 | 		$requete = "SELECT * FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_A_TRAITER."' ";
 | 
          
            | - |   | 130 | 		$retour = $this->bdd->recupererTous($requete);
 | 
          
            | 108 | 		$retour = $this->bdd->recupererTous($requete);
 | 131 | 		// echo pour que bash capte la sortie et stocke dans le log
 | 
          
            | 109 | 		
 | 132 | 		echo 'Il y a '.count($retour).' mails en attente '."--";
 | 
          
            | Line 110... | Line 133... | 
          
            | 110 | 		return $retour;
 | 133 | 		return $retour;
 | 
          
            | 111 | 	}
 | 134 | 	}
 | 
          
            | 112 | 	
 | 135 | 	
 | 
          
            | 113 | 	private function mettreMailsEnCoursDeTraitement() {
 | 136 | 	private function mettreMailsEnCoursDeTraitement() {
 | 
          
            | - |   | 137 | 		$requete = "UPDATE annu_donnees_temp SET adt_statut = '".self::STATUT_EN_TRAITEMENT."', adt_date_debut_traitement = NOW() ".
 | 
          
            | - |   | 138 | 					"WHERE adt_statut = '".self::STATUT_A_TRAITER."' ";
 | 
          
            | 114 | 		$requete = "UPDATE annu_donnees_temp SET adt_statut = '".self::STATUT_EN_TRAITEMENT."', adt_date_debut_traitement = NOW() ".
 | 139 | 		$maj = $this->bdd->executer($requete);
 | 
          
            | 115 | 					"WHERE adt_statut = '".self::STATUT_A_TRAITER."' ";
 | 140 | 		// echo pour que bash capte la sortie et stocke dans le log
 | 
          
            | Line 116... | Line 141... | 
          
            | 116 | 		$maj = $this->bdd->requeter($requete);
 | 141 | 		echo $maj.' mails ont été mis en traitement '."--";
 | 
          
            | 117 | 		return ($maj !== false);
 | 142 | 		return ($maj !== false);
 | 
          
            | Line 125... | Line 150... | 
          
            | 125 | 		
 | 150 | 		
 | 
          
            | 126 | 		$requete = "UPDATE annu_donnees_temp ".
 | 151 | 		$requete = "UPDATE annu_donnees_temp ".
 | 
          
            | 127 | 					"SET adt_donnees = '".$mail_mal_traite."' ".
 | 152 | 					"SET adt_donnees = '".$mail_mal_traite."' ".
 | 
          
            | Line 128... | Line 153... | 
          
            | 128 | 					"WHERE adt_id = '".$mail_a_moderer['adt_id']."'";
 | 153 | 					"WHERE adt_id = '".$mail_a_moderer['adt_id']."'";
 | 
          
            | 129 | 		
 | 154 | 		
 | 
          
            | 130 | 		$maj = $this->bdd->requeter($requete);
 | 155 | 		$maj = $this->bdd->executer($requete);
 | 
          
            | Line 131... | Line 156... | 
          
            | 131 | 		return $maj;
 | 156 | 		return $maj;
 | 
          
            | 132 | 	}
 | 157 | 	}
 | 
          
            | 133 | 	
 | 158 | 	
 | 
          
            | - |   | 159 | 	private function supprimerMailTraite($id) {
 | 
          
            | - |   | 160 | 		$requete = "DELETE FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ".
 | 
          
            | 134 | 	private function supprimerMailTraite($id) {
 | 161 | 					"AND adt_id = '".$id."'";
 | 
          
            | 135 | 		$requete = "DELETE FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ".
 | 162 | 		// echo pour que bash capte la sortie et stocke dans le log
 | 
          
            | 136 | 					"AND adt_id = '".$id."'";
 | 163 | 		echo'Suppression du mail '.$id.' qui a ete traite '."--";
 | 
          
            | Line 137... | Line 164... | 
          
            | 137 | 		$supp = $this->bdd->requeter($requete);
 | 164 | 		$supp = $this->bdd->executer($requete);
 | 
          
            | 138 | 		return $supp;
 | 165 | 		return $supp;
 | 
          
            | 139 | 	}
 | 166 | 	}
 | 
          
            | 140 | 	
 | 167 | 	
 | 
          
            | 141 | 	private function supprimerMailsEnCoursDeTraitement() {
 | 168 | 	private function supprimerMailsEnCoursDeTraitement() {
 | 
          
            | Line 142... | Line 169... | 
          
            | 142 | 		$requete = "DELETE FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ";
 | 169 | 		$requete = "DELETE FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ";
 | 
          
            | 143 | 		$supp = $this->bdd->requeter($requete);
 | 170 | 		$supp = $this->bdd->executer($requete);
 | 
          
            | 144 | 		return $supp;
 | 171 | 		return $supp;
 | 
          
            | 145 | 	}
 | 172 | 	}
 | 
          
            | 146 | 	
 | 173 | 	
 | 
          
            | 147 | 	private function remettreATraiterMailsEnRetard() {
 | 174 | 	private function traiterMailsEnRetard() {
 | 
          
            | Line 148... | Line 175... | 
          
            | 148 | 		// Les mails a traiter depuis plus de 10 heures sont considérés comme échoués et donc remis à traiter
 | 175 | 		// Les mails a traiter depuis plus de 10 heures sont considérés comme échoués et donc remis à traiter
 | 
          
            | - |   | 176 | 		// (en cas de plantage du script ou du serveur de mail pendant leur traitement)
 | 
          
            | - |   | 177 | 		$requete = "UPDATE annu_donnees_temp SET adt_statut = '".self::STATUT_EN_ECHEC."', adt_date_debut_traitement = NULL ".
 | 
          
            | 149 | 		// (en cas de plantage du script ou du serveur de mail pendant leur traitement)
 | 178 | 				"WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ".
 | 
          
            | - |   | 179 | 				"AND adt_date_debut_traitement < (DATE_SUB(now(), INTERVAL ".self::DELAI_MAX_TRAITEMENT.")) ";
 | 
          
            | - |   | 180 | 		
 | 
          
            | - |   | 181 | 		$maj = $this->bdd->executer($requete);
 | 
          
            | - |   | 182 | 		// echo pour que bash capte la sortie et stocke dans le log
 | 
          
            | - |   | 183 | 		echo 'Gestion des mails en retard '."--";
 | 
          
            | - |   | 184 | 		if($maj !== false) {
 | 
          
            | - |   | 185 | 			$requete = "SELECT * FROM annu_donnees_temp WHERE adt_statut = '".self::STATUT_EN_ECHEC."'";
 | 
          
            | - |   | 186 | 			$mails_en_echec = $this->bdd->recupererTous($requete);
 | 
          
            | 150 | 		$requete = "UPDATE annu_donnees_temp SET adt_statut = '".self::STATUT_A_TRAITER."', adt_date_debut_traitement = NULL ".
 | 187 | 			// echo pour que bash capte la sortie et stocke dans le log
 | 
          
            | Line 151... | Line 188... | 
          
            | 151 | 				"WHERE adt_statut = '".self::STATUT_EN_TRAITEMENT."' ".
 | 188 | 			echo 'Avertissement, des mails sont en retard : '.count($mails_en_echec)."--";
 | 
          
            | 152 | 				"AND adt_date_debut_traitement < (DATE_SUB(now(), INTERVAL ".self::DELAI_MAX_TRAITEMENT.")) ";
 | 189 | 			$this->avertirModerateurEchecTraitement($mails_en_echec);
 | 
          
            | 153 | 		
 | 190 | 		}
 | 
          
            | Line 214... | Line 251... | 
          
            | 214 | 		$resultats_envois_echoues = array();
 | 251 | 		$resultats_envois_echoues = array();
 | 
          
            | 215 | 		$ok = true;
 | 252 | 		$ok = true;
 | 
          
            | 216 | 		foreach ($destinataires as $destinataire) {
 | 253 | 		foreach ($destinataires as $destinataire) {
 | 
          
            | 217 | 			$ok = mail($destinataire, $sujetEncode, $contenu, $entetes);
 | 254 | 			$ok = mail($destinataire, $sujetEncode, $contenu, $entetes);
 | 
          
            | 218 | 			if (!$ok) {
 | 255 | 			if (!$ok) {
 | 
          
            | - |   | 256 | 				// echo pour que bash capte la sortie et stocke dans le log
 | 
          
            | - |   | 257 | 				echo'Echec envoi a '.$destinataire."\n";
 | 
          
            | 219 | 				$resultats_envois_echoues[] = $destinataire;
 | 258 | 				$resultats_envois_echoues[] = $destinataire;
 | 
          
            | 220 | 			}
 | 259 | 			}
 | 
          
            | 221 | 		}
 | 260 | 		}
 | 
          
            | 222 | 		return $resultats_envois_echoues;
 | 261 | 		return $resultats_envois_echoues;
 | 
          
            | 223 | 	}
 | 262 | 	}
 |