Bei einem Event ist mir aufgefallen was in Dotlan noch fehlt: Ein Knopf mit dem man sämtliche Turnier-Anmeldungen, den Cateringverkauf und die Sitzplan-Anmeldephase beenden kann.
Warum? Damit ich ein Abbild der Datenbank machen kann (für die LAN) und ab dann keine wichtigen Änderungen durch die User im Internet durchgeführt werden können. D.h. nach dem Knopfdruck kann sich niemand mehr im Internet an einem Turnier anmelden und wundern, warum er auf der LAN nicht angemeldet ist.
Features
-
Zugriff nur mit der Dotlan-Admin-Rolle „User“
-
Auswahl aus allen Events (Vorauswahl: aktuelles)
-
Sitzplan-Ende-Zeit auf jetzt ändern
-
Alle Turnieranmeldungen schließen
-
Alle Cateringruppen deaktivieren
-
Löschen aller Turnierteilnehmer, die nicht für die LAN-Party bezahlt haben
Screenshot
Quelltext
ACHTUNG: Es gibt mittlerweile eine neue Version – diese ist allerdings eingearbeitet in ein Framework, das wir für dotlan geschrieben haben, um unser altes Planungstool abzulösen. Daher ist es nicht standalone einsetzbar – hier der Code dazu: https://github.com/lantreff/dotlan_project/tree/master/tools/freeze
Hier die Standalone-Version:
-
Im Dotlan-Verzeichnis den Ordner „freeze“ anlegen
-
Folgende index.php herunterladen und in dem Ordner „freeze“ speichern
- freeze/index.php
-
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081<span class="kw2"><?php</span><span class="co2">############################################################</span><span class="co2"># Freeze-Button Modul for dotlan v1.0 #</span><span class="co2"># #</span><span class="co2"># Copyright (C) 2010 Torsten Amshove <torsten@amshove.net> #</span><span class="co2">############################################################</span><span class="kw1">include_once</span><span class="br0">(</span><span class="st0">"../global.php"</span><span class="br0">)</span><span class="sy0">;</span><span class="re0">$PAGE</span><span class="sy0">-></span><span class="me1">sitetitle</span> <span class="sy0">=</span> <span class="re0">$PAGE</span><span class="sy0">-></span><span class="me1">htmltitle</span> <span class="sy0">=</span> _<span class="br0">(</span><span class="st0">"Freeze"</span><span class="br0">)</span><span class="sy0">;</span><span class="kw1">if</span><span class="br0">(</span><span class="re0">$ADMIN</span><span class="sy0">-></span><span class="me1">check</span><span class="br0">(</span>ADMIN_USER<span class="br0">)</span><span class="br0">)</span><span class="br0">{</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"<br>"</span><span class="sy0">;</span><span class="kw1">if</span><span class="br0">(</span><span class="re0">$_POST</span><span class="br0">[</span><span class="st0">"submit"</span><span class="br0">]</span><span class="br0">)</span><span class="br0">{</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"<b>F&uuml;hre freeze aus:<br>"</span><span class="sy0">;</span><span class="re0">$event_id</span> <span class="sy0">=</span> <span class="kw3">mysql_real_escape_string</span><span class="br0">(</span><span class="re0">$_POST</span><span class="br0">[</span><span class="st0">"event_id"</span><span class="br0">]</span><span class="br0">)</span><span class="sy0">;</span><span class="kw1">if</span><span class="br0">(</span><span class="re0">$_POST</span><span class="br0">[</span><span class="st0">"sitzplan"</span><span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">1</span><span class="br0">)</span><span class="br0">{</span><span class="re0">$DB</span><span class="sy0">-></span><span class="me1">query</span><span class="br0">(</span><span class="st0">"UPDATE events SET seatreserveend = '"</span><span class="sy0">.</span><span class="kw3">date</span><span class="br0">(</span><span class="st0">"Y-m-d H:i:s"</span><span class="sy0">,</span><span class="kw3">time</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">.</span><span class="st0">"' WHERE id = '"</span><span class="sy0">.</span><span class="re0">$event_id</span><span class="sy0">.</span><span class="st0">"' LIMIT 1"</span><span class="br0">)</span><span class="sy0">;</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">" - Sitzplan-Anmeldung Ende auf JETZT gesetzt.<br>"</span><span class="sy0">;</span><span class="br0">}</span><span class="kw1">if</span><span class="br0">(</span><span class="re0">$_POST</span><span class="br0">[</span><span class="st0">"turniere"</span><span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">1</span><span class="br0">)</span><span class="br0">{</span><span class="re0">$DB</span><span class="sy0">-></span><span class="me1">query</span><span class="br0">(</span><span class="st0">"UPDATE t_turnier SET topen = 0 WHERE teventid = '"</span><span class="sy0">.</span><span class="re0">$event_id</span><span class="sy0">.</span><span class="st0">"'"</span><span class="br0">)</span><span class="sy0">;</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">" - Alle Turnieranmeldungen gestoppt.<br>"</span><span class="sy0">;</span><span class="br0">}</span><span class="kw1">if</span><span class="br0">(</span><span class="re0">$_POST</span><span class="br0">[</span><span class="st0">"turnier_abmeldung"</span><span class="br0">]</span> <span class="sy0">==</span><span class="nu0">1</span><span class="br0">)</span><span class="br0">{</span><span class="re0">$query</span> <span class="sy0">=</span> <span class="re0">$DB</span><span class="sy0">-></span><span class="me1">query</span><span class="br0">(</span><span class="st0">"SELECT p.tnid AS tnid, p.user_id AS user_idFROM `t_teilnehmer` AS n, t_turnier AS t, t_teilnehmer_part AS pWHERE n.tid = t.tidAND t.teventid = '"</span><span class="sy0">.</span><span class="re0">$event_id</span><span class="sy0">.</span><span class="st0">"'AND p.tnid = n.tnidAND p.user_id NOT IN (SELECT user_id FROM event_teilnehmer WHERE event_id = '"</span><span class="sy0">.</span><span class="re0">$event_id</span><span class="sy0">.</span><span class="st0">"')"</span><span class="br0">)</span><span class="sy0">;</span><span class="re0">$tnids</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><span class="re0">$userids</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><span class="kw1">while</span><span class="br0">(</span><span class="re0">$data</span> <span class="sy0">=</span> <span class="re0">$DB</span><span class="sy0">-></span><span class="me1">fetch_array</span><span class="br0">(</span><span class="re0">$query</span><span class="br0">)</span><span class="br0">)</span><span class="br0">{</span><span class="kw1">if</span><span class="br0">(</span><span class="sy0">!</span><span class="kw3">in_array</span><span class="br0">(</span><span class="re0">$data</span><span class="br0">[</span><span class="st0">"tnid"</span><span class="br0">]</span><span class="sy0">,</span><span class="re0">$tnids</span><span class="br0">)</span><span class="br0">)</span> <span class="re0">$tnids</span><span class="br0">[</span><span class="br0">]</span> <span class="sy0">=</span> <span class="re0">$data</span><span class="br0">[</span><span class="st0">"tnid"</span><span class="br0">]</span><span class="sy0">;</span><span class="kw1">if</span><span class="br0">(</span><span class="sy0">!</span><span class="kw3">in_array</span><span class="br0">(</span><span class="re0">$data</span><span class="br0">[</span><span class="st0">"user_id"</span><span class="br0">]</span><span class="sy0">,</span><span class="re0">$userids</span><span class="br0">)</span><span class="br0">)</span> <span class="re0">$userids</span><span class="br0">[</span><span class="br0">]</span> <span class="sy0">=</span> <span class="re0">$data</span><span class="br0">[</span><span class="st0">"user_id"</span><span class="br0">]</span><span class="sy0">;</span><span class="re0">$DB</span><span class="sy0">-></span><span class="me1">query</span><span class="br0">(</span><span class="st0">"DELETE FROM t_teilnehmer_part WHERE tnid = '"</span><span class="sy0">.</span><span class="re0">$data</span><span class="br0">[</span><span class="st0">"tnid"</span><span class="br0">]</span><span class="sy0">.</span><span class="st0">"' AND user_id = '"</span><span class="sy0">.</span><span class="re0">$data</span><span class="br0">[</span><span class="st0">"user_id"</span><span class="br0">]</span><span class="sy0">.</span><span class="st0">"' LIMIT 1"</span><span class="br0">)</span><span class="sy0">;</span><span class="br0">}</span><span class="kw1">foreach</span><span class="br0">(</span><span class="re0">$tnids</span> <span class="kw1">as</span> <span class="re0">$tnid</span><span class="br0">)</span><span class="br0">{</span><span class="re0">$DB</span><span class="sy0">-></span><span class="me1">query</span><span class="br0">(</span><span class="st0">"DELETE FROM t_teilnehmer WHERE tnid = '"</span><span class="sy0">.</span><span class="re0">$tnid</span><span class="sy0">.</span><span class="st0">"' AND tnanz = 1"</span><span class="br0">)</span><span class="sy0">;</span><span class="re0">$data</span> <span class="sy0">=</span> <span class="re0">$DB</span><span class="sy0">-></span><span class="me1">query_first</span><span class="br0">(</span><span class="st0">"SELECT tnid FROM t_teilnehmer WHERE tnid = '"</span><span class="sy0">.</span><span class="re0">$tnid</span><span class="sy0">.</span><span class="st0">"' AND tnleader IN ("</span><span class="sy0">.</span><span class="kw3">implode</span><span class="br0">(</span><span class="st0">","</span><span class="sy0">,</span><span class="re0">$userids</span><span class="br0">)</span><span class="sy0">.</span><span class="st0">")"</span><span class="br0">)</span><span class="sy0">;</span><span class="kw1">if</span><span class="br0">(</span><span class="sy0">!</span><span class="kw3">empty</span><span class="br0">(</span><span class="re0">$data</span><span class="br0">[</span><span class="st0">"tnid"</span><span class="br0">]</span><span class="br0">)</span><span class="br0">)</span><span class="br0">{</span><span class="re0">$query</span> <span class="sy0">=</span> <span class="re0">$DB</span><span class="sy0">-></span><span class="me1">query</span><span class="br0">(</span><span class="st0">"SELECT user_id FROM t_teilnehmer_part WHERE tnid = '"</span><span class="sy0">.</span><span class="re0">$tnid</span><span class="sy0">.</span><span class="st0">"'"</span><span class="br0">)</span><span class="sy0">;</span><span class="kw1">if</span><span class="br0">(</span><span class="re0">$DB</span><span class="sy0">-></span><span class="me1">num_rows</span><span class="br0">(</span><span class="re0">$query</span><span class="br0">)</span> <span class="sy0">></span> <span class="nu0">0</span><span class="br0">)</span><span class="br0">{</span><span class="re0">$new_tnleader</span> <span class="sy0">=</span> <span class="kw3">mysql_result</span><span class="br0">(</span><span class="re0">$query</span><span class="sy0">,</span><span class="nu0">0</span><span class="sy0">,</span><span class="st_h">'user_id'</span><span class="br0">)</span><span class="sy0">;</span><span class="re0">$DB</span><span class="sy0">-></span><span class="me1">query</span><span class="br0">(</span><span class="st0">"UPDATE t_teilnehmer SET tnleader = '"</span><span class="sy0">.</span><span class="re0">$new_tnleader</span><span class="sy0">.</span><span class="st0">"' WHERE tnid = '"</span><span class="sy0">.</span><span class="re0">$tnid</span><span class="sy0">.</span><span class="st0">"' LIMIT 1"</span><span class="br0">)</span><span class="sy0">;</span><span class="br0">}</span><span class="kw1">else</span><span class="br0">{</span><span class="re0">$DB</span><span class="sy0">-></span><span class="me1">query</span><span class="br0">(</span><span class="st0">"DELETE FROM t_teilnehmer WHERE tnid = '"</span><span class="sy0">.</span><span class="re0">$tnid</span><span class="sy0">.</span><span class="st0">"' LIMIT 1"</span><span class="br0">)</span><span class="sy0">;</span><span class="br0">}</span><span class="br0">}</span><span class="br0">}</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">" - Abgemeldete User aus Turnieren gel&ouml;scht. WICHTIG: unter <a href='/admin/support'>/admin/support</a> den Cache leeren!<br>"</span><span class="sy0">;</span><span class="br0">}</span><span class="kw1">if</span><span class="br0">(</span><span class="re0">$_POST</span><span class="br0">[</span><span class="st0">"catering"</span><span class="br0">]</span> <span class="sy0">==</span> <span class="nu0">1</span><span class="br0">)</span><span class="br0">{</span><span class="re0">$DB</span><span class="sy0">-></span><span class="me1">query</span><span class="br0">(</span><span class="st0">"UPDATE catering_groups SET active = 0"</span><span class="br0">)</span><span class="sy0">;</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">" - Alle Catering Artikelgruppen versteckt.<br>"</span><span class="sy0">;</span><span class="br0">}</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"</b><br><br>"</span><span class="sy0">;</span><span class="br0">}</span><span class="re0">$res</span> <span class="sy0">=</span> <span class="re0">$DB</span><span class="sy0">-></span><span class="me1">query</span><span class="br0">(</span><span class="st0">"SELECT id, name FROM events ORDER BY id"</span><span class="br0">)</span><span class="sy0">;</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"<form action='index.php' method='POST'>"</span><span class="sy0">;</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"<select name='event_id'>"</span><span class="sy0">;</span><span class="kw1">while</span><span class="br0">(</span><span class="re0">$data</span> <span class="sy0">=</span> <span class="re0">$DB</span><span class="sy0">-></span><span class="me1">fetch_array</span><span class="br0">(</span><span class="re0">$res</span><span class="br0">)</span><span class="br0">)</span><span class="br0">{</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"<option value='"</span><span class="sy0">.</span><span class="re0">$data</span><span class="br0">[</span><span class="st0">"id"</span><span class="br0">]</span><span class="sy0">.</span><span class="st0">"'"</span><span class="sy0">;</span><span class="kw1">if</span><span class="br0">(</span><span class="re0">$data</span><span class="br0">[</span><span class="st0">"id"</span><span class="br0">]</span> <span class="sy0">==</span> <span class="re0">$EVENT</span><span class="sy0">-></span><span class="kw3">next</span><span class="br0">)</span> <span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">" selected "</span><span class="sy0">;</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">">"</span><span class="sy0">.</span><span class="re0">$data</span><span class="br0">[</span><span class="st0">"name"</span><span class="br0">]</span><span class="sy0">.</span><span class="st0">"</option>"</span><span class="sy0">;</span><span class="br0">}</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"</select><br>"</span><span class="sy0">;</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"<input type='checkbox' name='sitzplan' value='1'> Sitzplan-Anmeldung Ende auf JETZT setzen.<br>"</span><span class="sy0">;</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"<input type='checkbox' name='turniere' value='1' checked> Turnieranmeldungen stoppen.<br>"</span><span class="sy0">;</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"<input type='checkbox' name='turnier_abmeldung' value='1' checked> Abgemeldete User aus Turnieren l&ouml;schen.<br>"</span><span class="sy0">;</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"<input type='checkbox' name='catering' value='1' checked> Catering Artikelgruppen verstecken.<br>"</span><span class="sy0">;</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"<input type='submit' name='submit' value='Ausf&uuml;hren'>"</span><span class="sy0">;</span><span class="re0">$output</span> <span class="sy0">.=</span> <span class="st0">"</form>"</span><span class="sy0">;</span><span class="br0">}</span><span class="re0">$PAGE</span><span class="sy0">-></span><span class="me1">render</span><span class="br0">(</span><span class="re0">$output</span><span class="br0">)</span><span class="sy0">;</span><span class="sy1">?></span>