préparation de la nl, la vrai, avant c'était gestion des archives
authorx2000habouzit <x2000habouzit>
Wed, 11 Feb 2004 12:41:06 +0000 (12:41 +0000)
committerx2000habouzit <x2000habouzit>
Wed, 11 Feb 2004 12:41:06 +0000 (12:41 +0000)
etat_migration
htdocs/admin/newsletter_prep.php [new file with mode: 0644]
templates/admin/newsletter_prep.tpl [new file with mode: 0644]

index b251454..827d470 100644 (file)
@@ -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 (file)
index 0000000..e8083f7
--- /dev/null
@@ -0,0 +1,116 @@
+<?php
+require('auto.prepend.inc.php');
+new_admin_page('admin/newsletter_prep.tpl');
+
+$from = '"Equipe polytechnique.org" <info_newsletter@polytechnique.org>';
+$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('\r','',$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 (file)
index 0000000..8da994a
--- /dev/null
@@ -0,0 +1,112 @@
+{* $Id: newsletter_prep.tpl,v 1.1 2004-02-11 12:41:06 x2000habouzit Exp $ *}
+
+{if $erreur}
+
+<p class="erreur">{$erreur}</p>
+
+{else}
+
+{dynamic}
+
+{if $action_msg}
+<p class="erreur">{$action_msg}</p>
+{/if}
+
+<div class="rubrique">
+  Préparer la Newsletter
+</div>
+
+<form action="{$smarty.server.REQUEST_URI}" method="POST">
+  <p class="conseil">
+    Conseil : enregistre souvent tes modifs pour éviter de les perdre si 
+    le navigateur plante et pour éviter d'oublier
+  </p>
+  <p class="conseil">
+    Vérifie bien que les lignes ne dépassent pas la largueur du cadre, 
+    certains navigateurs sautent à la ligne automatiquement
+  </p>
+  
+{if $own_lock}
+  <p class="normal">
+    Tu possèdes un verrou, tu peux éditer la newsletter.
+  </p>
+  <p class="normal">
+    <span class="erreur">Pense à relacher le verrou quand tu as fini.</span>
+  </p>
+  <div align="center">
+    <input type="submit" name="submit" value="Sauver et relacher le verrou">
+    <input type="submit" name="submit" value="Sauver">
+    <br />
+    <input type="submit" name="submit" value="Ne pas sauver et relacher le verrou">
+  </div>
+{elseif $is_lock}
+  <p class="normal">
+    <span class="erreur">{$id_lock} est en train d'éditer la newsletter depuis le
+      {$date_lock|date_format:"%c"}
+    </span>, 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...
+  </p>
+  <div align="center">
+    <input type="submit" name="submit" value="Relacher quand meme">
+  </div>
+  <br />
+{else}
+  <p class="normal">
+    Pas de lock sur le fichier, tu peux en prendre un.
+  </p>
+  <div align="center">
+    <input type="submit" name="submit" value="Prendre un verrou">
+  </div>
+  <p class="normal">
+    ou bien envoyer la newsletter tel qu'elle.
+  </p>
+  <div class="center">
+    <input type="text" name="test_to" size="40" value="{$smarty.session.username}@m4x.org" />
+    <input type="submit" name="submit" value="Envoi Test" />
+    <br />
+    <input type="submit" name="submit" value="Envoi Definitif" class="color:red;" />
+  </div>
+  <br />
+{/if}
+  <table class="bicol" cellpadding="3" summary="Newsletter">
+    <tr>
+      <th>
+        Préparation de la newsletter
+      </th>
+    </tr>
+    <tr>
+      <td class="titre">
+        Sujet
+      </td>
+    </tr>
+    <tr>
+      <td>
+        <input type="text" name="sujet" value="{$sujet}" size="55">
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Contenu
+      </td>
+    </tr>
+    <tr>
+      <td>
+        <textarea name='contenu' rows="100" cols="70" {if !$own_lock}readonly="readonly"{/if}>{$contenu}</textarea>
+      </td>
+    </tr>
+{if $own_lock}
+    <tr>
+      <td class="bouton">
+        <input type="submit" name="submit" value="Sauver">
+      </td>
+    </tr>
+{/if}
+  </table>
+</form>
+{/dynamic}
+{/if}
+
+{* vim:set et sw=2 sts=2 sws=2: *}