[PLUGINS] +abomailman
[ptitvelo/web/www.git] / www / plugins / abomailmans / genie / abomailmans_envois.php
diff --git a/www/plugins/abomailmans/genie/abomailmans_envois.php b/www/plugins/abomailmans/genie/abomailmans_envois.php
new file mode 100755 (executable)
index 0000000..0a5da56
--- /dev/null
@@ -0,0 +1,133 @@
+<?php\r
+/**\r
+ * Plugin Abomailmanss\r
+ * (c) 2009-2011 SPIP\r
+ * Distribue sous licence GPL\r
+ *\r
+ */\r
+\r
+if (!defined("_ECRIRE_INC_VERSION")) return;\r
+include_spip('inc/abomailmans');\r
+include_spip('inc/distant');\r
+\r
+/**\r
+ * Les abomailmans de chaque liste peuvent se faire par cron\r
+ * base sur les champs remplis de chaque liste\r
+ * automatique tout les /periodicite/ jours\r
+ * @param unknown_type $time\r
+ */\r
+function genie_abomailmans_envois_dist($time) {\r
+       \r
+       /**\r
+        * Les listes dont la date_envoi < maintenant+periodicite\r
+        * pour tester on peut mettre a MINUTE penser a remettre a DAY !!\r
+        */\r
+       $where = "periodicite!='' AND desactive='0' AND email!=''\r
+               AND date_envoi < DATE_SUB(NOW(), INTERVAL periodicite DAY)"; \r
+       $id_liste = sql_getfetsel("id_abomailman", "spip_abomailmans", $where, '', "date_envoi", "1");\r
+        \r
+       if ($id_liste) {\r
+               spip_log("il faut traiter liste id=$id_liste","abomailmans");\r
+               $res2 = liste_a_jour($id_liste);\r
+       } else $res2 = true;\r
+       \r
+       /**\r
+        * nul, si la tache n'a rien a faire\r
+        * positif, si la tache a ete traitee\r
+        * negatif, si la tache a commence, mais doit se poursuivre. \r
+        * Cela permet d'effectuer des taches par lots (pour eviter des timeout sur les executions des scripts PHP \r
+        * a cause de traitements trop longs).\r
+        * Dans ce cas la, le nombre negatif indique correspond au nombre de secondes d'intervalle \r
+        * pour la prochaine execution.\r
+        */\r
+       return ($res1 OR $res2) ? 0 : $id_liste;\r
+}       \r
+       \r
+       \r
+\r
+function liste_a_jour($id_liste) {\r
+       $envoi_ok=true;\r
+       $t = sql_fetsel("*", "spip_abomailmans", "id_abomailman=$id_liste");\r
+       if(!$t) { \r
+               spip_log("requete null ...","abomailmans");\r
+               return;\r
+       } else spip_log("envoi teste avec cron abomailmans","abomailmans");\r
+               \r
+       $datas = array();\r
+       $nom_site = lire_meta("nom_site");\r
+       $email_webmaster = lire_meta("email_webmaster");\r
+       $charset = lire_meta('charset');\r
+\r
+\r
+       $sujet=$t['titre']; \r
+       $date_envoi=$t['date_envoi']; \r
+       $email_receipt=$t['email'];\r
+       $modele_defaut=$t['modele_defaut'];\r
+       \r
+       $recuptemplate = explode('&',$modele_defaut);\r
+               \r
+       include_spip('abomailmans_fonctions');\r
+       $paramplus = recup_param($modele_defaut); //pour url\r
+       $periodicite=intval($t['periodicite']);\r
+\r
+       /**\r
+        * la page a envoyer doit etre testee a maintenant moins periodicite\r
+        */\r
+       $time = time() - (3600 * 24 * $periodicite);\r
+\r
+       /**\r
+        * construction du query\r
+        */\r
+       parse_str($paramplus,$query);\r
+       $query['id_abomailman'] = $t['id_abomailman'];\r
+       $query['template'] = $recuptemplate[0];\r
+       $query['date'] = date('Y-m-d H:i:s', $time);\r
+\r
+       /**\r
+        * on peut verifier le fond grace à l'url\r
+        */\r
+       $url_genere = generer_url_public('abomailman_template',$query,'&'); \r
+       $fond = recuperer_fond('abomailman_template',$query);\r
+\r
+       $body = array(\r
+               'html'=>$fond,\r
+       ); \r
+       /* Format Texte */\r
+       $query['envoi_txt'] = "oui";\r
+       $body['texte'] = recuperer_fond('abomailman_template',$query);\r
+\r
+       //Si la page renvoie un contenu\r
+       if (strlen($fond) > 10) {\r
+                               \r
+               // email denvoi depuis config facteur\r
+               if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui'\r
+                         AND $GLOBALS['meta']['facteur_adresse_envoi_email'])\r
+                       $from_email = $GLOBALS['meta']['facteur_adresse_envoi_email'];\r
+               else\r
+                       $from_email = $email_webmaster;\r
+               // nom denvoi depuis config facteur\r
+               if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui'\r
+                         AND $GLOBALS['meta']['facteur_adresse_envoi_nom'])\r
+                       $from_nom = $GLOBALS['meta']['facteur_adresse_envoi_nom'];\r
+               else\r
+                       $from_nom = $nom_site;\r
+                               \r
+               if (abomailman_mail($from_nom, $from_email, "", $email_receipt, $sujet,$body, true, $charset)) {\r
+                       spip_log("envoi ok = $url_genere tous les $periodicite jours sujet =".$sujet,"abomailmans");\r
+               } else {\r
+                       spip_log("!! envoi nok = $url_genere tous les $periodicite jours sujet =".$sujet,"abomailmans."._LOG_ERREUR);\r
+                       $envoi_ok=false;\r
+               }\r
+       }\r
+       else {\r
+               spip_log("maintenant=".date('Y-m-d H:i:s', time())." date demande = ".$query['date']." non envoye =$url_genere : rien de neuf depuis $periodicite jours","abomailmans"); \r
+       }\r
+       \r
+       if($envoi_ok) {\r
+               // Noter que l'envoi est OK meme si envoi echoue faute de contenu, on reessaiera dans /periodicite/ jours\r
+               sql_updateq("spip_abomailmans", array("date_envoi" => date('Y-m-d H:i:s', time())), "id_abomailman=".$t['id_abomailman']);\r
+       }\r
+       return false; # c'est bon\r
+}\r
+\r
+?>
\ No newline at end of file