Away-Hack

Andy1988
Titel: Away-Hack
Version: 2.0
Beschreibung: Mit diesem Hack kann ein User einen Zeitraum und einen Grund für eine Abwesendheit im UserCP angeben. Diese beiden Sachen werden im Thread, dem Profil und der Memberliste beim entsprechenden User angezeigt.

Neu in Version 2:
Man kann für jede Gruppe einstellen, ob der User einen Abwesendheitsstatus definieren darf
Man hat im UserCP jetzt die Möglichkeit die Away Meldung mittels eines Ja/Nein Dropdown-Menüs anzeigen zu lassen oder nicht. So muss man nicht immer die Abwesendheitsmeldungen löschen, sondern stellt einfach auch "Nein".
Man kann (nur, wenn der Admin das so möchte) nicht posten, wenn man Abwesend istt.
Der Hack funktioniert jetzt auch mit ausgeschalteten register_globals.
Es gibt eine Setup Datei, die die Datenbank ändert, die Sprachvariablen importiert, die Templates importiert und cachet und die Gruppenvariablen importiert.

@Alle, die ältere Versionen installiert haben:
Am Besten ist es, ihr deinstalliert den alten hack nochmal (geht die alte Anleitung einfach rückgängig) und installiert den neuen hack komplett neu, da viel geändert worden ist!
----
Demo: http://andy.gsm-modding.de/away1.0demo/

weiter zum Download
Bräke
Hi du,
hab den Hack mal freigeschaltet, würde dir aber dazu raten, den Teil in der thread.php nochmal zu überarbeiten.
Du erzeugst für jeden Beitrag um die Away-Infos zu holen je eine weitere SQL-Abfrage auf die bbx_users. Das macht, bei 20 Beiträgen pro Seite, 20 Abfragen mehr.

Tipp:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
$result = $db->query("SELECT p.*, pc.cache,
		u.userposts, u.regdate, u.signature, u.email, u.homepage, u.icq, u.aim, u.yim, u.msn, u.showemail, u.receivepm, u.usercanemail, u.ratingcount, u.ratingpoints, u.gender, u.invisible, u.title, u.lastactivity, u.allowsigsmilies, u.allowsightml, u.allowsigbbcode, u.allowsigimages, u.disablesignature,
		r.ranktitle, r.rankimages,
		at.attachmentname, at.attachmentid, at.attachmentextension, at.attachmentsize, at.counter,
		i.iconpath, i.icontitle
		$userfields
		$avatar
		$marking
		FROM bb".$n."_posts p 
		LEFT JOIN bb".$n."_users u USING (userid)
		LEFT JOIN bb".$n."_ranks r USING (rankid)
		LEFT JOIN bb".$n."_attachments at ON (p.attachmentid=at.attachmentid)
		LEFT JOIN bb".$n."_icons i ON (p.iconid=i.iconid)
		LEFT JOIN bb".$n."_postcache pc ON (p.postid=pc.postid)
		$userfieldsjoin
		$avatarjoin
		$markingjoin
		WHERE p.postid IN (0".$this->postids.")".$this->orderBy);


baue die abzufragenden Spalten mit hier ein.
u.away usw.....

In den Templates kannst du dann $posts['away'] ausgeben.

Augenzwinkern Augenzwinkern
Andy1988
Stimmt!
Ich mach das eben!

Die thread.php finde ich ist die komplizierteste php Datei vom ganzen WBB2 großes Grinsen Ich hab da voll nich durchgeblickt!

edit:
So! Jetzt hab ichd as in den LEFT JOIN eingefügt.
So langsam kapier ich auch, was in der thread.php vor sich geht Augenzwinkern

Thx!
Speedrider
1a Hack funktioniert Super.


3 kleine verbesserungs vorschläge hab ich.

1. Benutze eine install datei zum importierne der SPrqchvariabelen. ( kann ich dir machen falls du dies nicht kannst.)

2. die Sprachvariablen für thread kann man auf 1 beschrenken mach dies einfach so.

Der User ist vom $datefrom[2].$datefrom[1].$datefrom[0] bis zum $dateto[2].$dateto[1].$dateto[0] abwesend:

3.

mach nach abwesen ein . und mach dann unten drunter Begründung: text

dies solltets du in der thread machen udn im profil

im Profil solltest du es auch einwenig anderst aufbauen von der Formulairung her ist aber nicht so wichtig.


Und 2 kleine fehler du hast in der usercp statt


php:
1:
$db->unbuffered_query("UPDATE `bb".$n."_users` SET `away_message` = '".$away_message."',`away_from` = '".$yearfrom."-".$monthfrom."-".$dayfrom."',`away_to` = '".$yearto."-".$monthto."-".$dayto."' WHERE `userid` = '".$wbbuserdata[userid]."';");


dies
php:
1:
$db->unbuffered_query("UPDATE `bb2_users` SET `away_message` = '".$away_message."',`away_from` = '".$yearfrom."-".$monthfrom."-".$dayfrom."',`away_to` = '".$yearto."-".$monthto."-".$dayto."' WHERE `userid` = '".$wbbuserdata[userid]."';");

Und bei dem myswl update hast du statt

code:
1:
2:
3:
4:
 ALTER TABLE `bbx_users` ADD `away_message` TEXT NOT NULL ,
ADD `away_from` DATE NOT NULL ,
ADD `away_to` DATE NOT NULL ;
 


dies
code:
1:
2:
3:
4:
 ALTER TABLE `bb2_users` ADD `away_message2` TEXT NOT NULL ,
ADD `away_from` DATE NOT NULL ,
ADD `away_to` DATE NOT NULL ;
 


Das soltest du änden.
Andy1988
Zitat:
2. die Sprachvariablen für thread kann man auf 1 beschrenken mach dies einfach so.

Der User ist vom $datefrom[2].$datefrom[1].$datefrom[0] bis zum $dateto[2].$dateto[1].$dateto[0] abwesend:

Genau das geht aber leider nicht. In Sprachvariablen werden keine Variablen ersetzt! Deswegen hab ich ja auch so viele benutzt!
Den Rest ändere ich grade. Waren mal wieder nur so kleine peinliche Flüchtigkeitsfehler Augenzwinkern

edit:
Alle Bugs gefixt und das ganze n bischen anders Formatiert. Mit "Begründung:" usw.
Gleich mach ich noch neue Screenshots und die Installer Datei Augenzwinkern
Speedrider
Mhh seltsam dabei hab ich doch auch variablen in denn sprachvariablen drinnen.

Herzlich Willkommen bei $master_name udn dies geht und schau mal ob ih das bei dir auch hinbekomme.

PS: Ist die Datei aktualisiert worden zusammen mit der install datei oder was fehlt noch?
JaY^JaY
Kannst du auch machen das man in der Mitgliederliste mit einem ICON neben dem benutzernamen als away angezeigt wird?
Speedrider
Das wär genail am besten auch im online status das da ein anderer Status angezeigt wird.
Bräke
Look:

code:
1:
$LANG_THREAD_BLA = $lang->get("LANG_THREAD_BLA", array('$username' => $post['username']));
Speedrider
@Bräke an wenn gilt nun dieses post von dir?
Bräke
an alle dies lesen Augenzwinkern
Speedrider
Und was sol das bewirken bzw wo hin soll das?
Andy1988
Ich teste grad den Installer!

Allerdings iser noch ohne Template caching usw. Das werd ich warscheinlich auch nich reinbasteln, weil noch n paar mehr neue reinkommen. In der Final mach ich alles perfekt.

Das mit dem anderen icon lässt sich lösen. ich schau nachher mal danach, wenn ichd as mit den Sprachvariablen, wie Bräke das gepostet hat gemacht hab Augenzwinkern Wobei ichd as immernoch nich ganz kapier *g* Aber ich werds schon rausfinden großes Grinsen
Speedrider
Hi udsn wann wird ca. die nächste version bzw die Final rauskommen?

Du kannst ja mal bräke fargen wie das mit denn Template cachen in der installer geht.
Andy1988
Naja, wennd as mit den ganzen Verbesserungsvorschlägen so weitergeht warscheinlich nie großes Grinsen
Naja ich mach das gleich fertig und morgen mach ich mich dann mal ans Rechte System. Ma schauen.

Das is mein erster Hack, den ich so veröffentliche! Der Installer geht übrigens so gut wie!

edit:
Bersion 1.0.2 ist online! Leider immernoch ohne Installer, aber man kann jetzt im Thread, im Profil und in der Memberlist zusätzlich anzeigen lassen, ob ein User abwesend ist. Näheres steht in der install-Datei!
Speedrider
so hab mal geupdadet scheint alles diesmal 1 a zu funktionieren.

V2.0 könnte ich sogar morgen schon relasen ist nicht viel aufwand könnt sogar ich mit meinem wenigen php kenntnise!
Andy1988
Es gibt eine neue Version.

Nähere Infos, diehe ersten Post!
Rocksteady
Hi,

also ich hoffe ihr könnt mir helfen:

ich hab den Hack eingebaut, Templates gecached alles 7 mal kontrolliert, aber wenn ich unter meinem Profile auf Abwesenheitsmeldung klicke, kommt immer nur ein weißes Fenster mit folgender Meldung:

template "usercp_away" doesnt exist

In meiner ACP ist das Template aufgeführt und ich denke daß ich keinen Fehler bei dem Upload gemacht habe.

Hat jemand einen Plan und kann mit helfen?

Gruß
Rocksteady

P.S.: Punkt 11 - 16 der Hackanleitung habe ich weggelassen, weil ich es als optional interpretiere. Ist das OK?
Speedrider
Hi hast du denn auch die setup.php ausgeführt?
Andy1988
Das du 11-16 weggelassen hast ist egal! Sind ja, wie du schon sagtest optinonale Schritte.

Es kann wirklich nur am Template liegen, was nicht gecached wurde oder an verschiedenen Templatepacks vielleicht!