From 37d8c8b64f100845ff16f621f6df1fc298d05c99 Mon Sep 17 00:00:00 2001 From: Daniel Tartavel Date: Wed, 7 Apr 2021 21:08:08 +0200 Subject: [PATCH] 2021-04-07 --- avionpoeme.php | 4 +- gestion/avions.php | 8 ++ .../comment_exporter_tableur_vers_cvs.html | 3 +- .../comment_exporter_tableur_vers_cvs.html~ | 19 ++++ gestion/comment_exporter_tableur_vers_cvs.txt | 3 +- .../comment_exporter_tableur_vers_cvs.txt~ | 17 ++++ gestion/genere_lang.php | 43 ++++----- gestion/stats.php | 74 ++++++++++++++++ include/config.inc.php | 1 + include/db.class.php | 63 +++++++------ include/envoi_courriel.inc.php | 45 +++++++++- include/fonctions.inc.php | 11 +-- peripetie.cron.php | 88 +++++++++++++++++++ 13 files changed, 312 insertions(+), 67 deletions(-) create mode 100644 gestion/avions.php create mode 100644 gestion/comment_exporter_tableur_vers_cvs.html~ create mode 100644 gestion/comment_exporter_tableur_vers_cvs.txt~ create mode 100644 gestion/stats.php create mode 100644 peripetie.cron.php diff --git a/avionpoeme.php b/avionpoeme.php index 5173679..a218f2f 100644 --- a/avionpoeme.php +++ b/avionpoeme.php @@ -12,14 +12,14 @@ foreach ($table as $var) { - if ( !empty(getpost( $var ))) + if ( getpost( $var ) != null ) { $r = getpost( $var ); /*if ( $r == "true") { $r = 1; }elseif( $r ="false")*/ - $db->$var = $r; + $db->$var = trim($r, ' \"'); }else { $erreur[] = $var; diff --git a/gestion/avions.php b/gestion/avions.php new file mode 100644 index 0000000..e3d4fcf --- /dev/null +++ b/gestion/avions.php @@ -0,0 +1,8 @@ +https://lite.framaca
  • cliquer sur enregistrer
  • cliquer sur "Utiliser le format Texte CSV"
  • sélectionner le Jeu de caractère "Unicode (UTF-8)"
  • -
  • dans "Séparateur de champ" sélectionner ";"
  • +
  • dans "Séparateur de champ" sélectionner "|" (barre verticale - AltGr + -)
  • +
  • dans "Séparateur de chaines de caractères" supprimer les guillemets et laisser vide.
  • cliquer sur valider
  • uploader le fichier sur le serveur dans le dossier lang/
  • en admin lancer le script genere_lang.php
  • diff --git a/gestion/comment_exporter_tableur_vers_cvs.html~ b/gestion/comment_exporter_tableur_vers_cvs.html~ new file mode 100644 index 0000000..63a3fbc --- /dev/null +++ b/gestion/comment_exporter_tableur_vers_cvs.html~ @@ -0,0 +1,19 @@ + +Documentation pour l'importation des langues. + +Depuis https://lite.framacalc.org/9mfo-traduction +
      +
    1. cliquer sur enregistrer
    2. +
    3. choisir "ODS" comme format d'export
    4. +
    5. ouvrir avec "LibreOffice Calc"
    6. +
    7. dans "LibreOffice Calc" , menu "Fichier" => "enregistrer sous ..."
    8. +
    9. sélectionner le dossier dans lequel vous voulez enregistrer le fichier
    10. +
    11. choisir le format "Texte CSV(.csv)"à la place de "Classeur ODF(.ods)" (en bas à droite de la fenêtre)
    12. +
    13. cliquer sur enregistrer
    14. +
    15. cliquer sur "Utiliser le format Texte CSV"
    16. +
    17. sélectionner le Jeu de caractère "Unicode (UTF-8)"
    18. +
    19. dans "Séparateur de champ" sélectionner "|" (barre verticale - AltGr + -)
    20. +
    21. cliquer sur valider
    22. +
    23. uploader le fichier sur le serveur dans le dossier lang/
    24. +
    25. en admin lancer le script genere_lang.php
    26. +
    diff --git a/gestion/comment_exporter_tableur_vers_cvs.txt b/gestion/comment_exporter_tableur_vers_cvs.txt index df74203..a85a754 100644 --- a/gestion/comment_exporter_tableur_vers_cvs.txt +++ b/gestion/comment_exporter_tableur_vers_cvs.txt @@ -11,7 +11,8 @@ Depuis https://lite.framacalc.org/9mfo-traduction 7 - cliquer sur enregistrer 8 - cliquer sur "Utiliser le format Texte CSV" 9 - sélectionner le Jeu de caractère "Unicode (UTF-8)" -10 - dans "Séparateur de champ" sélectionner ";" +10 - dans "Séparateur de champ" sélectionner "|" (barre verticale - AltGr + -) +11 - dans "Séparateur de chaines de caractères" supprimer les guillemets et laisser vide. 11 - cliquer sur valider 12 - uploader le fichier sur le serveur dans le dossier lang/ 13 - en admin lancer le script genere_lang.php diff --git a/gestion/comment_exporter_tableur_vers_cvs.txt~ b/gestion/comment_exporter_tableur_vers_cvs.txt~ new file mode 100644 index 0000000..09729c9 --- /dev/null +++ b/gestion/comment_exporter_tableur_vers_cvs.txt~ @@ -0,0 +1,17 @@ + +Documentation pour l'importation des langues. + +Depuis https://lite.framacalc.org/9mfo-traduction +1 - cliquer sur enregistrer +2 - choisir "ODS" comme format d'export +3 - ouvrir avec "LibreOffice Calc" +4 - dans "LibreOffice Calc" , menu "Fichier" => "enregistrer sous ..." +5 - sélectionner le dossier dans lequel vous voulez enregistrer le fichier +6 - choisir le format "Texte CSV(.csv)"à la place de "Classeur ODF(.ods)" (en bas à droite de la fenêtre) +7 - cliquer sur enregistrer +8 - cliquer sur "Utiliser le format Texte CSV" +9 - sélectionner le Jeu de caractère "Unicode (UTF-8)" +10 - dans "Séparateur de champ" sélectionner "|" (barre verticale - AltGr + -) +11 - cliquer sur valider +12 - uploader le fichier sur le serveur dans le dossier lang/ +13 - en admin lancer le script genere_lang.php diff --git a/gestion/genere_lang.php b/gestion/genere_lang.php index 10f5b9a..7f68527 100644 --- a/gestion/genere_lang.php +++ b/gestion/genere_lang.php @@ -11,68 +11,71 @@ $first_object = true; while( $line = fgets($fh)) { + echo $line . EOLH; $first_column = true; - $table = explode(';', $line); + $table = explode('|', $line); $i =0; foreach ( $table as $column ) { - $column = trim($column, " \n\r\t\v\0\"" ); - echo $column . "=>"; + + $column = trim($column, " \n\r\t\0\"" ); + if ($first_line == true) { - echo "first_line =>"; + //echo "first_line =>"; if ( $first_column_line == true ) { - echo "first_column"; + //echo "first_column"; $first_column_line = false; }else { $index = explode("/",$column); - echo "opening ../lang/" . $index[0]; + echo "opening ../lang/" . $index[0] . EOLH; - $fhl[++$i] = fopen("../lang/" . $index[0], "w") or die("can't open lang/" . $index[0]); + $fhl[++$i] = fopen("../lang/" . $index[0], "wb") or die("can't open lang/" . $index[0]); fwrite($fhl[$i], '{'); if ( $first_column == true ) { $first_column = false; }else { - fwrite($fhIndex, ","); + fwrite($fhIndex, ","); } fwrite($fhIndex, '"' . $index[0] . '":"' . $index[1] . '"'); } - echo EOL; + echo EOLH; }else { if (!empty($fhIndex)) { + fwrite($fhIndex, '}'); fclose($fhIndex); unset($fhIndex); } - echo "not first_line =>"; + //echo "not first_line =>"; if ( $first_column == true ) { $first_column = false; $index = $column; - echo "first_column = ". $index . "=>"; + //echo "first_column = ". $index . "=>"; }else { $i++; - if ($first_object == true) // insère la virgule + if ($first_object == false) // insère la virgule { - echo "first_object =>"; - }else - { - echo "not first_object =>"; + //echo "not first_object =>"; fwrite($fhl[$i], ", "); } - fwrite($fhl[$i], '"' . $index . '":"' . $column .'"'); //écrit l'objet json - echo "writing " . '"' . $index . '":"' . $column .'"'; + $text = '"' . $index . '":"' . $column .'"'; + fwrite($fhl[$i], $text ); //écrit l'objet json + echo "writing ***" . $text .'***' . EOLH; + fflush($fhl[$i]); + } - echo EOL; + echo EOLH; } - echo EOL; + //echo EOLH; } if ($first_line == false) { diff --git a/gestion/stats.php b/gestion/stats.php new file mode 100644 index 0000000..5822e03 --- /dev/null +++ b/gestion/stats.php @@ -0,0 +1,74 @@ +open(); + + function totaltotal() //nombre d'avions poèmes créés depuis le début + { + global $db; + $query = "SHOW TABLE STATUS LIKE 'avionpoeme'"; + $db->query($query); + $result = $db->result->fetch_assoc(); + return $result['Auto_increment']-1; + } + function total() + { + global $db; + $query = "SELECT COUNT(*) as nAvion FROM avionpoeme"; + $db->query($query); + $result = $db->result->fetch_assoc(); + return $result["nAvion"]; + + } + + function totalenvol() + { + global $db; + $query = "SELECT COUNT(*) as n FROM avionpoeme WHERE public!=2"; + $db->query($query); + $result = $db->result->fetch_assoc(); + return $result["n"]; + } + + function alea() + { + global $db; + $query = "SELECT COUNT(*) as nAvion FROM avionpoeme WHERE "; + $db->query($query); + $result = $db->result->fetch_assoc(); + return $result["n"]; + + } + + function anonymous() + { + global $db; + $query = "SELECT COUNT(*) as n FROM avionpoeme WHERE expemail=''"; + $db->query($query); + $result = $db->result->fetch_assoc(); + return $result["n"]; + } + + + $nAvionCree = totaltotal(); + if ($nAvionCree == 0) + { + echo "Aucun avion-poème envoyé pour l'instant"; + }else + { + + echo "Nombre total d'avions-poème : " . $nAvionCree . EOL; + $total = total(); + $avionSupp = $nAvionCree-$total; + echo "Nombre d'avion supprimés : " . $avionSupp . " => " . $avionSupp/$nAvionCree*100 . "%" . EOL; + $nAvionenvol = totalenvol(); + echo "Nombre d'avions-poème en vol : " . $nAvionenvol . " => " . $nAvionenvol/$nAvionCree*100 . "%" . EOL; + $anonymous = anonymous(); + echo "Nombre d'envois anonymes : " . $anonymous . " => " . $anonymous/$nAvionCree*100 . "%" . EOL; + } + + + $db->close(); diff --git a/include/config.inc.php b/include/config.inc.php index 9400b30..fff7499 100644 --- a/include/config.inc.php +++ b/include/config.inc.php @@ -1,6 +1,7 @@ " ); define( 'LF', "\r\n" ); define( 'TAB', "\t" ); diff --git a/include/db.class.php b/include/db.class.php index ce264b4..929b8af 100644 --- a/include/db.class.php +++ b/include/db.class.php @@ -7,6 +7,7 @@ if ( !isset($site) ) require_once "config.inc.php"; require_once "log.php"; +require_once "envoi_courriel.inc.php"; $table_prefix = ""; class db @@ -110,14 +111,14 @@ class db $query .= "FROM_UNIXTIME(" . $this->protect($this->deliveryTime) . "), '"; $query .= $this->protect($this->deliveryTZ) . "', "; $query .= "FROM_UNIXTIME(" . $this->protect($this->deliveryTimeServer) . "), '"; - $query .= $this->protect($this->deliveryMethod) . "'"; - $query .= ")"; + $query .= $this->protect($this->deliveryMethod) . "','"; + $query .= "0')"; //print_r($this); $this->query($query); $this->uid = $this->connect->insert_id; echo "{'uid':'" . $this->uid . "'}"; - - //newPeripetie($uid); + courrielEnvoi($this); + $this->newPeripetie(); } function getCurrentPlanes() @@ -142,7 +143,7 @@ class db }else //renvoie les lignes d'anthologie { if ($page > $n_pages) $page=$n_pages; - $query = "SELECT UNIX_TIMESTAMP(startTime) as startTime, startTZ, startName, message, UNIX_TIMESTAMP(deliveryTime) as deliveryTime , deliveryTZ, destName FROM avionpoeme WHERE deliveryTimeServerquery($query); $planes = $this->result->fetch_all(MYSQLI_ASSOC); print json_encode($planes, JSON_FORCE_OBJECT); @@ -154,39 +155,37 @@ class db { global $db; $query = "INSERT INTO avionPeripetie VALUES ('0','"; - $query .= $this->protect($this->uid) . ",'"; - $query .= $this->protect($this->idPeripetie) . "', '"; - $query .= $this->protect($this->datePeripetie) . "', '"; - $query .= $this->protect($this->effetPeripetie) . "', '"; - $query .= $this->protect($this->expeMail) . "', '"; - $query .= $this->protect($this->destMail) . "')"; - echo $query; - //$this->query($query); + $query .= $this->protect($this->uid) . "','"; + $query .= $this->protect($this->idPeripetie) . "', "; + $query .= "FROM_UNIXTIME(" . $this->protect($this->datePeripetie) . "))"; + //$query .= $this->protect($this->effetPeripetie) . "', '"; + //$query .= $this->protect($this->expeMail) . "', '"; + //$query .= $this->protect($this->destMail) . "')"; echo $query . EOL; + $this->query($query); } function newPeripetie() { global $db; - mt_getrandmax ( ); - $query = "SELECT COUNT(*) as count FROM peripeties"; + + $query = "SELECT *, DATEDIFF(quand,CURDATE()) as datePeripetie FROM peripeties WHERE quand IS NULL"; + echo $query .EOL; $this->query($query); - $result = $this->result->fetch_assoc(); - $db->idPeripetie = round(mt_rand(1,$result["count"])); - $query = "SELECT * FROM peripeties WHERE idPeripetie='" . $db->idPeripetie . "'"; - $query = "SELECT COUNT(*) as count FROM peripeties"; - $this->query($query); - $result = $this->result->fetch_assoc(); - //calcul de la probabilité de la péripétie - - - //ajustement de l'effet - - - - - - - $this->savePeripetie(); + $this->startTime = 1616584838; + $this->deliveryTime = 1617469941; + while ( ($result = $this->result->fetch_assoc()) ) + { + print_r($result["idPeripetie"]); + $this->idPeripetie = $result["idPeripetie"]; + if ((mt_rand(0,100) <= $result["probabilite"])) //calcul de la probabilité de la péripétie + { + print $this->startTime . "=>" . $this->deliveryTime . "===>"; + $this->datePeripetie = mt_rand($this->startTime, $this->deliveryTime); //ajustement de l'effet + print $this->datePeripetie . "EOL"; + $this->savePeripetie(); + break; //une seule péripétie par avionpoème. Enlever le break si pas de limites sur le nombre de péripéties + } + } } } diff --git a/include/envoi_courriel.inc.php b/include/envoi_courriel.inc.php index 4ce8359..9869eed 100644 --- a/include/envoi_courriel.inc.php +++ b/include/envoi_courriel.inc.php @@ -1,6 +1,46 @@ expeLang ); + $dicoDest = getLang( $db->destLang ); + $expediteurIndex = "Notification_denvoi_Expediteur"; + //print "envoi du courriel" . EOL; + if ( $db->expeKnown == false ) + { + $destinataireIndex = "Notification_denvoi_Destinataire_ExpediteurConnu"; + }else + { + $destinataireIndex = "Notification_denvoi_Destinataire_ExpediteurAnonyme"; + } + $indexObjet = "Objet_" . $expediteurIndex; + $objetMail = $dicoExpe[$indexObjet]; + $mailText = $dicoExpe[$expediteurIndex] .EOL .EOL ; + + envoiMail( $db->expeMail, $objetMail, $mailText, true); + + $indexObjet = "Objet_" . $destinataireIndex; + $objetMail = $dicoExpe[$indexObjet]; + $mailText = $dicoExpe[$destinataireIndex] .EOL .EOL ; + //sleep (1); + envoiMail( $db->destMail, $objetMail, $mailText, true); +} + +function courrielArrivee($uid) +{ + //TODO +} function envoiMail($destinataire, $sujet, $text, $html=false) { @@ -16,16 +56,17 @@ function envoiMail($destinataire, $sujet, $text, $html=false) $headers .= "DATE: " . date( 'r' ) . LF . LF; log_write(__FILE__ . __LINE__ . " Envoi d'un courriel à " . $text . "sujet:" . $sujet, INFO); - if( !mail($destinataire, $sujet, $text, $headers) ) //Sending mail + if( !mail($destinataire, $sujet, wordwrap($text, 70 , "\r\n"), $headers) ) //Sending mail { log_write(__FILE__ . EOL . __LINE__ . EOL . "Le courriel n'est pas parti:" .$text . EOL . $sujet . EOL, ERROR); return 0; }else { - log_write(__FILE__ . EOL . __LINE__ . EOL . "Le courriel avec les pièces jointes est parti:" .$text . EOL, INFO); + log_write(__FILE__ . EOL . __LINE__ . EOL . "Le courriel est parti:" .$text . EOL, INFO); return 1; } + } ?> diff --git a/include/fonctions.inc.php b/include/fonctions.inc.php index 251c30c..8eba094 100644 --- a/include/fonctions.inc.php +++ b/include/fonctions.inc.php @@ -8,7 +8,7 @@ if ( !isset($site) ) // $default valeur retournée si aucune valeur n'est trouvée // $session: si true, rechercher aussi dans $_SESSION -function getpost( $var, $default="", $session=false ) +function getpost( $var ) { //echo '$var =>' . $var . "
    "; if ( isset($_GET[$var]) ) @@ -22,14 +22,7 @@ function getpost( $var, $default="", $session=false ) return $_POST[$var]; }else { - if ( isset($_SESSION[$var]) AND $session==true ) - { - return $_SESSION[$var]; - }else - { - //echo 'default -> $var =>' . $var . "
    "; - return $default; - } + return; } } diff --git a/peripetie.cron.php b/peripetie.cron.php new file mode 100644 index 0000000..cd3c6bd --- /dev/null +++ b/peripetie.cron.php @@ -0,0 +1,88 @@ +open(); + test(); + //peripetieDatee(); + peripeties(); + + function peripetieDatee() + { + global $db; + require_once 'envoi_courriel.inc.php'; + $flag = false; + + //recherche des péripéties datées + $query = "SELECT * FROM peripeties WHERE quand!='' AND DATEDIFF(quand,CURDATE())=0"; + $db->query($query); + $peripetieTable = $result = $db->result->fetch_all(MYSQLI_ASSOC); + $query = "SELECT * FROM avionpoeme WHERE atteri=0"; + $db->query($query); + while ( ($result = $db->result->fetch_assoc()) ) + { + $dicoExpe = getLang( $result['expeLang'] ); + $dicoDest = getLang( $result['destLang'] ); + foreach( $peripetieTable as $p ) + { + $indexObjet = "Objet_" . $p['indexText']; + $objetMail = $dicoExpe["Objet_" . $p['indexText']]; + $mailText = $dicoExpe[$p['indexText']] .EOL .EOL ; + print $objetMail .EOLH; + print $mailText .EOLH; + envoiMail( "dtux@free.fr", $objetMail, $mailText, true);//$result['destMail'] + sleep(2); + envoiMail( "dtux@free.fr", $objetMail, $mailText, true);//$result['expeMail'] + sleep(2); + } + } + } + + function peripeties() + { + global $db; + //recherche des péripéties non datées + $query = "SELECT * FROM avionpoeme WHERE atteri = 0"; + $db->query($query); + $dbPeripetie = new db(); + $dbPeripetie->open(); + + while ( ($result = $db->result->fetch_assoc()) ) + { + $dicoExpe = getLang( $result['expeLang'] ); + $dicoDest = getLang( $result['destLang'] ); + $query = "SELECT * FROM avionPeripetie LEFT JOIN peripeties USING (idPeripetie) WHERE idAvion='" . $result['idAvion'] . "'"; + $dbPeripetie->query($query); + while (($peripetie =$dbPeripetie->result->fetch_assoc())) + { + print $result["destMail"] . EOL; + $indexObjet = "Objet_" . $peripetie['indexText']; + $objetMail = $dicoExpe["Objet_" . $peripetie['indexText']]; + $mailText = $dicoExpe[$peripetie['indexText']] .EOL .EOL ; + print $indexObjet . EOL; + print $mailText .EOL; + //envoiMail( "dtux@free.fr", $objetMail, $mailText, true);//$result['destMail'] + //sleep(2); + //envoiMail( "dtux@free.fr", $objetMail, $mailText, true);//$result['expeMail'] + //sleep(2); + } + + } + $dbPeripetie->close(); + } + + function test() + { + $lang = array( 'fr', 'en', 'es', 'de', 'ar', 'bg', 'zh', 'ja', 'pt'); + foreach ($lang as $value) + { + getLang( $value ); + print $value; + print json_last_error_msg() .EOL; + } + } + $db->close(); +?>