From: x2000habouzit Date: Wed, 11 Feb 2004 12:41:06 +0000 (+0000) Subject: préparation de la nl, la vrai, avant c'était gestion des archives X-Git-Tag: xorg/old~1876 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=86e24fa34960e465fb6db3b3eee630934fbf0237;p=platal.git préparation de la nl, la vrai, avant c'était gestion des archives --- diff --git a/etat_migration b/etat_migration index b251454..827d470 100644 --- a/etat_migration +++ b/etat_migration @@ -28,7 +28,6 @@ Etat | Ancien nom | Nouveau nom | admin/marketing_promo.php | | admin/marketing_volontaire.php | | admin/newsletter_pattecassee.php | - | admin/newsletter_prep.php | | admin/pg.php | | admin/relance.php | | admin/utilisateurs.php | @@ -145,6 +144,7 @@ xx | admin/FormatePrenomNOM.php | scripts/ xx | admin/graph_promo.php | stats/graph_promo.php xx | admin/index.php | - xx | admin/newsletter_archi.php | - +xx | admin/newsletter_prep.php | - xx | admin/postfix_blacklist.php | - xx | admin/postfix_perm.php | - xx | admin/postfix_retardes.php | - diff --git a/htdocs/admin/newsletter_prep.php b/htdocs/admin/newsletter_prep.php new file mode 100644 index 0000000..e8083f7 --- /dev/null +++ b/htdocs/admin/newsletter_prep.php @@ -0,0 +1,116 @@ +'; +$from_error = 'gld@m4x.org'; +$filename = "/home/web/newsletter/newsletter.cur"; +$lockfile = "/home/web/newsletter/newsletter.lock"; + +// regarde si le lock est pris ou pas +$lock = fopen($lockfile,"r+"); +// prend un lock en écriture +if (!flock($lock, 2)) { + $page->assign('erreur','Impossible de prendre un lock sur le fichier de lock, pas de fichier ?'); + $page->display('errlock'); +} + +$contenu = (isset($_REQUEST['contenu']) ? $_REQUEST['contenu'] : ""); +$sujet = (isset($_REQUEST['sujet']) ? $_REQUEST['sujet'] : ""); + +$nb = fscanf($lock, "%d %s",$date, $id_lock); +$is_lock = ($nb != 0); +$own_lock = false; +if($is_lock) { + $own_lock = ($id_lock == $_SESSION['username']); +} + +// action si on recoit un formulaire +$res = true; +$envoi = false; + +if (isset($_REQUEST['submit'])) { + if($_REQUEST['submit'] == "Prendre un verrou") { + if($is_lock) { + $page->assign('action_msg', 'Verrou déjà pris'); + } else { + fputs($lock,time()." ".$_SESSION['username']); + $is_lock = $own_lock = true; + } // pas de lock + } elseif ($_REQUEST['submit'] == "Relacher quand meme" + || $_REQUEST['submit'] == "Ne pas sauver et relacher le verrou") { + ftruncate($lock, 0); + $is_lock = $own_lock = false; + } elseif ($_REQUEST['submit'] == "Envoi Test") { + $envoi = true; + $to = $_REQUEST['test_to']; + } elseif ($_REQUEST['submit'] == "Envoi Definitif") { + $envoi = true; + $to = "newsletter@polytechnique.org"; + } elseif (isset($_REQUEST['contenu'])) { + $res = false; + if (!$own_lock) { + $page->assign('action_msg', 'Pas de verrou, on ne peut pas enregistrer, + sauvegarde tes modifications avec un copier-coller, + prends un verrou si possible puis remets tes modifs + sur la nouvelle version et enregistre'); + } else { + if (get_magic_quotes_gpc()) { + $contenu = stripslashes($contenu); + $contenu = str_replace(' ','',$contenu); + $sujet = rtrim(stripslashes($sujet)); + } + if (($fp = fopen($filename, "w")) == -1) { + $page->assign('action_msg', "Impossible d'ouvrir le fichier $filename"); + } elseif (fwrite($fp, "$sujet\n")) { + if (fwrite($fp, $contenu)) { + $res = true; + } else { + $page->assign('action_msg', "Impossible d'écrire dans le fichier $filename"); + } + fclose($fp); + } else { + $page->assign('action_msg', "Impossible d'écrire dans le fichier $filename"); + fclose($fp); + } + if($_REQUEST['submit'] == "Sauver et relacher le verrou"){ + ftruncate($lock, 0); + $is_lock = $own_lock = false; + } + } // else (!$own_lock) + } +} // if ifdef(sumbit) + +flock($lock, 3); // relache le verrou + +if (!isset($_REQUEST['submit']) or $res) { + // il n'y a pas eu de submit ou il y a eu un submit et + // l'ecriture c'est bien passee, on relit le fichier + $c=file($filename); + $contenu = ''; + reset($c); + $sujet = rtrim(current($c)); + while ($line = next($c)) { + $contenu .= $line; + } +} + +if ($envoi) { + require("diogenes.mailer.inc.php"); + $FROM = "From: $from"; + $mymail = new DiogenesMailer($from_error, $to, $sujet, false); + $mymail->addHeader($FROM); + $mymail->setBody($contenu); + $mymail->send(); +} + +$page->assign('date_lock',$date); +$page->assign('own_lock',$own_lock); +$page->assign('id_lock',$id_lock); +$page->assign('is_lock',$is_lock); + +$page->assign('contenu', $contenu); +$page->assign('sujet', $sujet); +$page->display(); + +?> diff --git a/templates/admin/newsletter_prep.tpl b/templates/admin/newsletter_prep.tpl new file mode 100644 index 0000000..8da994a --- /dev/null +++ b/templates/admin/newsletter_prep.tpl @@ -0,0 +1,112 @@ +{* $Id: newsletter_prep.tpl,v 1.1 2004-02-11 12:41:06 x2000habouzit Exp $ *} + +{if $erreur} + +

{$erreur}

+ +{else} + +{dynamic} + +{if $action_msg} +

{$action_msg}

+{/if} + +
+ Préparer la Newsletter +
+ +
+

+ Conseil : enregistre souvent tes modifs pour éviter de les perdre si + le navigateur plante et pour éviter d'oublier +

+

+ Vérifie bien que les lignes ne dépassent pas la largueur du cadre, + certains navigateurs sautent à la ligne automatiquement +

+ +{if $own_lock} +

+ Tu possèdes un verrou, tu peux éditer la newsletter. +

+

+ Pense à relacher le verrou quand tu as fini. +

+
+ + +
+ +
+{elseif $is_lock} +

+ {$id_lock} est en train d'éditer la newsletter depuis le + {$date_lock|date_format:"%c"} + , tu ne peux pas éditer la newsletter ni prendre de verrou. Si l'admin + précédent a oublié de supprimer (c'est mal) son verrou, tu + peux le supprimer quand même avec le bouton ci-dessous, mais il faut que tu sois + vraiment certain qu'il n'est plus en train d'éditer, sinon, il risque d'y + avoir des pertes dans les modifications faites à la lettre... +

+
+ +
+
+{else} +

+ Pas de lock sur le fichier, tu peux en prendre un. +

+
+ +
+

+ ou bien envoyer la newsletter tel qu'elle. +

+
+ + +
+ +
+
+{/if} + + + + + + + + + + + + + + + + +{if $own_lock} + + + +{/if} +
+ Préparation de la newsletter +
+ Sujet +
+ +
+ Contenu +
+ +
+ +
+
+{/dynamic} +{/if} + +{* vim:set et sw=2 sts=2 sws=2: *}