Montag, 15. März 2010Woltlab wbb3 AutoGroupJoin nach Beiträgen UND Zeit
Im wbb3.1 kann man bei den Benutzergruppen ja einstellen, daß Benutzer automatisch nach x Tagen oder y Aktivitätspunkten automatisch der Gruppe hinzugefügt werden. Ich hatte nun aber das Problem, daß ich die Benutzer nach x Tagen und y Beiträgen automatisch hinzufügen lassen will.
Das läßt sich recht einfach durch eine kleine Codeänderung in der GroupAutoJoinCronjob.class.php erreichen: Die Datei befindet sich in wcf/lib/system/cronjob Und hier einfach die beiden If-Abfragen CODE: if ($row['neededAge'] > 0)
{ ... }
if ($row['neededPoints'] > 0)
{ ... }durch diesen Code hier ersetzen: CODE: if ($row['neededAge'] > 0 && $row['neededPoints'] > 0)
{
$sql = "SELECT u1.userID
FROM wcf".WCF_N."_user AS u1, wbb".WBB_N."_user AS u2
WHERE u1.registrationDate < ".(TIME_NOW - 86400 * $row['neededAge'])."
AND u1.userID NOT IN (
SELECT userID
FROM wcf".WCF_N."_user_to_groups
WHERE groupID = ".$row['groupID']."
) AND u2.posts >= ".$row['neededPoints']." AND u2.userID=u1.userID";
$result2 = WCF::getDB()->sendQuery($sql);
while ($row2 = WCF::getDB()->fetchArray($result2)) {
$userIDArray[] = $row2['userID'];
}
}
else
{
if ($row['neededAge'] > 0) {
$sql = "SELECT userID
FROM wcf".WCF_N."_user
WHERE registrationDate < ".(TIME_NOW - 86400 * $row['neededAge'])."
AND userID NOT IN (
SELECT userID
FROM wcf".WCF_N."_user_to_groups
WHERE groupID = ".$row['groupID']."
)";
$result2 = WCF::getDB()->sendQuery($sql);
while ($row2 = WCF::getDB()->fetchArray($result2)) {
$userIDArray[] = $row2['userID'];
}
}
if ($row['neededPoints'] > 0) {
$sql = "SELECT userID
FROM wbb".WCF_N."_user
WHERE posts >= ".$row['neededPoints']."
AND userID NOT IN (
SELECT userID
FROM wcf".WCF_N."_user_to_groups
WHERE groupID = ".$row['groupID']."
)";
$result2 = WCF::getDB()->sendQuery($sql);
while ($row2 = WCF::getDB()->fetchArray($result2)) {
$userIDArray[] = $row2['userID'];
}
}
}Bei den Gruppeneinstellungen steht halt weiterhin noch "nach Punkten", verwendet wird aber die Anzahl der gezählten Beiträge (Mich stört es nicht, es ist nur ein schneller Hack und kein Schönheitswettbewerb *g*) Was noch fehlt ist, daß Benutzer wieder der Gruppe entfernt werden, wenn ihnen Beiträge gelöscht werden und wieder unter die Grenze kommen. Sobald ich das Programmiert hab werd ich es hier hinzufügen. Sonntag, 20. Dezember 2009Grepolis Weltdaten in MySQL
Die Weltdaten für Grepolis gibt es nun auch und ich bastel gerade an einer Weltkarte für Grepolis. Die Daten liegen aber als JSON vor und nicht wie bei Stämme/Tribalwars als CSV. Damit die Daten per LOAD DATA INFILE in die MySQL-Datenbank geladen werden können, sind noch ein paar kleine Stringoperationen nötig.
Mit folgendem Befehl wird man die Feldbezeichner im JSON los, per sed werden die Bezeichner inkl. Doppelpunkt durch einen leeren String ersetzt. Hier für die players.json Datei: CODE: sed -i 's/"id":\|"name":\|"alliance_id":\|"points":\|"rank":\|"towns"://g' players.jsonIn den anderen Dateien der Weltdaten müssen natürlich die entsprechenden Bezeichner rausgenommen werden. Und hier noch der SQL-Befehl um die Daten in die Datenbank zu klopfen: CODE: LOAD DATA INFILE 'players2.json' INTO TABLE players FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES STARTING BY '{' TERMINATED BY '}';Die Sonderzeichen liegen in den JSON-Dateien als 4-Byte Unicode-Hexcode vor, also z.B. das 'ä' als '\u00e4'. Da ich die Sonderzeichen aber als urlencoded UTF-8 brauch (das 'ä' also als '%C3A4'), laß ich die vor dem LOAD DATA per regulärem Ausdruck suchen und wandle sie entsprechend um. Freitag, 20. November 2009Telefonnummern Rückwärtssuche
Hier mal wieder ein kleiner (nützlicher?) Codeschnipsel von mir.
Bei dasoertliche.de gibt es ja die Rückwärtssuche für Telefonnummern. Mit folgendem kurzen Skript kann man die Suche abfragen: CODE: #!/bin/bash
wget -qO- "http://www.dasoertliche.de/Controller?form_name=search_inv&ph=$1" | grep -e "na:" | head -n 1 | awk -v FS=""" '{print $2}'Das erste Skript liefert den Namen, falls er in der Rückwärtssuche existiert. Es liefert nur den ersten gefundenen Eintrag zu einer Nummer. Das zweite hier liefert noch Straße, PLZ und Ort: CODE: #!/bin/bash
wget -qO- "http://www.dasoertliche.de/Controller?form_name=search_inv&ph=$1" | grep -e "pc:\|na:\|st:\|ci:" | awk -v FS=""" '{print $2}'Das Skript verwende ich im Zusammenhang mit einem selbst programmierten ISDN-Monitor in Verbindung mit eGroupware. In dem Server steckt eine ISDN-Karte die an die Telefonanlage angeschlossen ist. Über die callerid.conf wird bei Anrufen auf bestimmten MSN ein Skript ausgeführt, daß zuerst im Adressbuch der Groupware nach der Nummer sucht (das kann ich auch noch genauer erklären falls gewünscht). Existiert dort kein Eintrag wird die Rückwärtssuche abgefragt. Der Anruf wird dann in das Infolog der Groupware geschrieben aus dem eine Liste mit den letzten Anrufen erzeugt wird die im Kopf auf jeder Seite der Groupware angezeigt wird (und die per Ajax alle paar Sekunden aktualisiert wird). Dienstag, 10. November 2009Logfile Auswertung
Aufgrund dieses Artikels über Bing von Kris hab ich bei mir mal die Logfiles von twmaps.org durchsucht, wieviel Daten die Suchmaschinencrawler denn so herunterladen.
Die Logfiles liegen bei mir im combined-Format vor (Standard bei nginx und apache), also in in dieser Form: CODE: 66.249.65.124 - - [09/Nov/2009:06:32:17 +0100] "GET /index.php HTTP/1.1" 200 <strong>5476</strong> "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"Die Auswertung, wieviel Bytes nun z.B. vom Googlebot insgesamt heruntergeladen wurden läßt sich auf der shell mit einem einfachen Befehl herauskriegen: "Logfile Auswertung" vollständig lesen Freitag, 6. November 2009Parallelisierung in der Shell - Hell, Yeah!
Auf dem alten twmaps.org-Server (AMD 64 3700+, lahme alte Kiste halt) lief das Update der zur Zeit 305 Weltkarten für twmaps jede Nacht auf niedrigster Prio (nice -n 19) etwa sechs Stunden.
Auf dem neuen Server lief das Update dann - welch Überraschung - nur knapp 10 bis 15 Minuten schneller. "Parallelisierung in der Shell - Hell, Yeah!" vollständig lesen Freitag, 6. November 2009neuer Server
Ich hab nun seit ein paar Tagen einen neuen Server für twmaps.org (nicht nur, u.A. auch für dieses Blog und noch paar andere Sachen).
Es ist ein Intel i7-920 mit 8 GB Ram und geht ordentlich ab :-) Ich werd hier nun auch immer mal wieder ein bißchen was über die Implementierung von twmaps.org und andere Projekte schreiben. Mittwoch, 4. November 2009wbb3 und die inaktiven Benutzer
Im Wolfsburg-Edition Forum sind nun inzwischen fast 15000 Benutzer angemeldet, der Großteil davon ist aber inaktiv. Die Plugins fürs WBB3 bzw. WCF waren irgendwie zu überladen und immer nur mit automatischer Löschung der Benutzer. Eine einfache Funktion um nur den Benutzern automatisch eine email schicken zu lassen gibts nicht.
Ich hab mir dann mit einem einfachen Cronjob fürs WCF beholfen "wbb3 und die inaktiven Benutzer" vollständig lesen Mittwoch, 4. November 2009s9y mit nginx
Sodele, Serendipity läuft hier nun prächtig auf nginx, mal schauen was das hier noch so ergibt.
Da nginx die .htaccess nicht beachtet braucht man eigene Rewrite Rules für die Pfade, bei mekk gibt's eine gute Beschreibung darüber. Der Rest ist ja normale Konfiguration des Webservers.
(Seite 1 von 1, insgesamt 8 Einträge)
|
SucheBookmarkKategorienGetaggte ArtikelVerwaltung des Blogs |
