Menü

Login

Aktuelle Version

Forum > Addon: Freeze *

DOTLAN Intranet / Portal >> Konfiguration, Erweiterungen, Addons > Addon: Freeze
Antwort erstellen
Autor Thema: Addon: Freeze
Torsten
15.03.2010 um 23:16 QuoteProfileSend PM
NEW

Clan: maxlan
Postings: 29

Da am Wochenende wieder ein Event ansteht, ist mir aufgefallen was fehlt: Ein Knopf mit dem man sämtliche Turnier-Anmeldungen, den Cateringverkauf und die Sitzplan-Anmeldephase beenden kann.
Warum? Damit ich ein Dump der DB ziehen kann (für die LAN) und ab dann (per Knopfdruck) keine wichtigen Sachen mehr im Internet passieren 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.
In der Config gibts zwar ein Readonly, aber das klang irgendwie böse - und Kommentare etc können ja ruhig weiterlaufen.
Außerdem müsste ich eigentlich lernen .. aber die Wohnung ist schon sauber, deswegen brauchte ich eine andere Ausrede

Ich hab das ganze erstmal als Dotlan-Addon geschrieben. Einfach einen Ordner namens "freeze" erstellen und eine index.php mit folgendem Inhalt:
Code:
<?php
############################################################
# Freeze-Button Modul for dotlan #
# #
# Copyright (C) 2010 Torsten Amshove <torsten@amshove.net> #
############################################################
include_once("../global.php");
$PAGE->sitetitle = $PAGE->htmltitle = _("Freeze");

if($ADMIN->check(ADMIN_USER)){
$output .= "<br>";

if($_POST["submit"]){
$output .= "<b>Führe freeze aus:<br>";
$event_id = mysql_real_escape_string($_POST["event_id"]);
if($_POST["sitzplan"] == 1){
$DB->query("UPDATE events SET seatreserveend = '".date("Y-m-d H:i:s",time())."' WHERE id = '".$event_id."' LIMIT 1");
$output .= " - Sitzplan-Anmeldung Ende auf JETZT gesetzt.<br>";
}
if($_POST["turniere"] == 1){
$DB->query("UPDATE t_turnier SET topen = 0 WHERE teventid = '".$event_id."'");
$output .= " - Alle Turnieranmeldungen gestoppt.<br>";
}
if($_POST["catering"] == 1){
$DB->query("UPDATE catering_groups SET active = 0");
$output .= " - Alle Catering Artikelgruppen versteckt.<br>";
}
$output .= "</b><br><br>";
}

$res = $DB->query("SELECT id, name FROM events ORDER BY id");

$output .= "<form action='index.php' method='POST'>";
$output .= "<select name='event_id'>";
while($data = $DB->fetch_array($res)){
$output .= "<option value='".$data["id"]."'";
if($data["id"] == $EVENT->next) $output .= " selected ";
$output .= ">".$data["name"]."</option>";
}
$output .= "</select><br>";
$output .= "<input type='checkbox' name='sitzplan' value='1'> Sitzplan-Anmeldung Ende auf JETZT setzen.<br>";
$output .= "<input type='checkbox' name='turniere' value='1' checked> Turnieranmeldungen stoppen.<br>";
$output .= "<input type='checkbox' name='catering' value='1' checked> Catering Artikelgruppen verstecken.<br>";
$output .= "<input type='submit' name='submit' value='Ausführen'>";
$output .= "</form>";
}

$PAGE->render($output);
?>


Wenn man das Modul aufruft (geht nur als Admin) gibts ne Drop-Down Box mit den Events (nächstes automatisch ausgewählt) und eine Auswahl, ob man die Sitzplan-Ende-Zeit auf jetzt ändern will, alle Turnieranmeldungen schließen will und/oder alle Catering Artikelgruppen deaktivieren will.

Einen DB-Dump hab ich nicht mit eingebaut, den gibts schon im support-Tool und in phpmyadmin. Könnte man vllt. für uns faule Admins noch irgendwann mit einbauen.
Gibt es eine Möglichkeit das Ding ins support-Tool zu integrieren? Dann wäre es schonmal näher an ner Dump-Funktion dran.

Fällt euch noch was auf, was man aufnehmen sollte?
__________________
www.maxlan.de
 
Bigga
16.03.2010 um 05:45 QuoteProfileSend PM
NEW

Clan: KST-LAN
Postings: 418

Sauber
 
Torsten
18.03.2010 um 13:25 QuoteProfileSend PM
NEW

Clan: maxlan
Postings: 29

Hab noch etwas hinzugefügt. Mit ner extra Option kann man nun auch die Turniere aufräumen und von der LAN abgemeldete User aus den Turnieren schmeißen (siehe Fehler: http://www.dotlan.net/de/forum/thread/1015/)

Hier der neue Code (komplett - einfach die index.php komplett ersetzen):
Code:
<?php
############################################################
# Freeze-Button Modul for dotlan #
# #
# Copyright (C) 2010 Torsten Amshove <torsten@amshove.net> #
############################################################
include_once("../global.php");
$PAGE->sitetitle = $PAGE->htmltitle = _("Freeze");

if($ADMIN->check(ADMIN_USER)){
$output .= "<br>";

if($_POST["submit"]){
$output .= "<b>Führe freeze aus:<br>";
$event_id = mysql_real_escape_string($_POST["event_id"]);
if($_POST["sitzplan"] == 1){
$DB->query("UPDATE events SET seatreserveend = '".date("Y-m-d H:i:s",time())."' WHERE id = '".$event_id."' LIMIT 1");
$output .= " - Sitzplan-Anmeldung Ende auf JETZT gesetzt.<br>";
}
if($_POST["turniere"] == 1){
$DB->query("UPDATE t_turnier SET topen = 0 WHERE teventid = '".$event_id."'");
$output .= " - Alle Turnieranmeldungen gestoppt.<br>";
}
if($_POST["turnier_abmeldung"] ==1){
$query = $DB->query("SELECT p.tnid AS tnid, p.user_id AS user_id
FROM `t_teilnehmer` AS n, t_turnier AS t, t_teilnehmer_part AS p
WHERE n.tid = t.tid
AND t.teventid = '".$event_id."'
AND p.tnid = n.tnid
AND p.user_id NOT IN (SELECT user_id FROM event_teilnehmer WHERE event_id = '".$event_id."')");
$tnids = array();
$userids = array();
while($data = $DB->fetch_array($query)){
if(!in_array($data["tnid"],$tnids)) $tnids[] = $data["tnid"];
if(!in_array($data["user_id"],$userids)) $userids[] = $data["user_id"];
$DB->query("DELETE FROM t_teilnehmer_part WHERE tnid = '".$data["tnid"]."' AND user_id = '".$data["user_id"]."' LIMIT 1");
}

foreach($tnids as $tnid){
$DB->query("DELETE FROM t_teilnehmer WHERE tnid = '".$tnid."' AND tnanz = 1");
$data = $DB->query_first("SELECT tnid FROM t_teilnehmer WHERE tnid = '".$tnid."' AND tnleader IN (".implode(",",$userids).")");
if(!empty($data["tnid"])){
$query = $DB->query("SELECT user_id FROM t_teilnehmer_part WHERE tnid = '".$tnid."'");
if($DB->num_rows($query) > 0){
$new_tnleader = mysql_result($query,0,'user_id');
$DB->query("UPDATE t_teilnehmer SET tnleader = '".$new_tnleader."' WHERE tnid = '".$tnid."' LIMIT 1");
}else{
$DB->query("DELETE FROM t_teilnehmer WHERE tnid = '".$tnid."' LIMIT 1");
}
}
}

$output .= " - Abgemeldete User aus Turnieren gelöscht. WICHTIG: unter <a href='/admin/support'>/admin/support</a> den Cache leeren!<br>";
}
if($_POST["catering"] == 1){
$DB->query("UPDATE catering_groups SET active = 0");
$output .= " - Alle Catering Artikelgruppen versteckt.<br>";
}
$output .= "</b><br><br>";
}

$res = $DB->query("SELECT id, name FROM events ORDER BY id");

$output .= "<form action='index.php' method='POST'>";
$output .= "<select name='event_id'>";
while($data = $DB->fetch_array($res)){
$output .= "<option value='".$data["id"]."'";
if($data["id"] == $EVENT->next) $output .= " selected ";
$output .= ">".$data["name"]."</option>";
}
$output .= "</select><br>";
$output .= "<input type='checkbox' name='sitzplan' value='1'> Sitzplan-Anmeldung Ende auf JETZT setzen.<br>";
$output .= "<input type='checkbox' name='turniere' value='1' checked> Turnieranmeldungen stoppen.<br>";
$output .= "<input type='checkbox' name='turnier_abmeldung' value='1' checked> Abgemeldete User aus Turnieren löschen.<br>";
$output .= "<input type='checkbox' name='catering' value='1' checked> Catering Artikelgruppen verstecken.<br>";
$output .= "<input type='submit' name='submit' value='Ausführen'>";
$output .= "</form>";
}

$PAGE->render($output);
?>


__________________
www.maxlan.de
 
Torsten
18.03.2010 um 14:02 QuoteProfileSend PM
NEW

Clan: maxlan
Postings: 29

Achja: gibts ne möglichkeit, per Script den Cache zu leeren/aktualisieren? Das muss man momentan noch manuell machen, nachdem die Turnier-DB aufgeräumt wurde
__________________
www.maxlan.de
 
DerMega
18.03.2010 um 14:46 QuoteProfileSend PM
NEW

Clan: Mitten aus Deutschland e.V.
Postings: 438

Megaaaaa
Hey super. Tolles Script.
Die Möglichkeit des Cacheleerens iss doch in den Supporttools gegeben.
Muss man da ja auch des öfteren nutzen. :o)
 
Torsten
22.03.2010 um 12:11 QuoteProfileSend PM
NEW

Clan: maxlan
Postings: 29

das sind aber wieder unnötige klicks
__________________
www.maxlan.de
 
Bigga
22.03.2010 um 17:52 QuoteProfileSend PM
NEW

Clan: KST-LAN
Postings: 418

Torsten hat folgendes geschrieben:
Achja: gibts ne möglichkeit, per Script den Cache zu leeren/aktualisieren? Das muss man momentan noch manuell machen, nachdem die Turnier-DB aufgeräumt wurde

Ich glaub zwar ich versteh dich falsch, aber trotzdem ^^

Wenn du den Cache löschen willst musst du den Inhalt des entsprechenden Ordners im Webspace / im Intranet löschen.
 
Torsten
26.03.2010 um 15:27 QuoteProfileSend PM
NEW

Clan: maxlan
Postings: 29

ich dachte eher an eine Funktion, die man mit dem Script ausführen kann.
__________________
www.maxlan.de
 
Sorehead
06.09.2010 um 15:51 QuoteProfileSend PM
NEW

Clan: Gamesession Hannover
Postings: 348

*push* hat das jemand mal mit der aktuellen Version getestet? Ich bekomme folgende Fehlermeldung:

Code:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /www/htdocs/w00b6477/addons/freeze/index.php:1) in /www/htdocs/w00b6477/includes/class.session.php on line 121

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w00b6477/addons/freeze/index.php:1) in /www/htdocs/w00b6477/includes/class.page.php on line 238

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w00b6477/addons/freeze/index.php:1) in /www/htdocs/w00b6477/includes/class.page.php on line 239

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w00b6477/addons/freeze/index.php:1) in /www/htdocs/w00b6477/includes/class.page.php on line 240

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w00b6477/addons/freeze/index.php:1) in /www/htdocs/w00b6477/includes/class.page.php on line 385

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w00b6477/addons/freeze/index.php:1) in /www/htdocs/w00b6477/includes/class.page.php on line 247

 
Sorehead
06.09.2010 um 23:53 QuoteProfileSend PM
NEW

Clan: Gamesession Hannover
Postings: 348

Verdammte Leerzeichen
 
Sorehead
07.09.2010 um 10:57 QuoteProfileSend PM
NEW

Clan: Gamesession Hannover
Postings: 348

Habe das Skript mal ein wenig für unseren Bedarf erweitert. Unter anderem um diese Geschichte der nicht ANWESENDEN User: http://www.dotlan.net/de/forum/thread/1029/
 
[ Antwort erstellen ]