YourWBB Merge_Doublepost Hack |
MrMind
Sklave des Supportes
Dabei seit: 19.01.04
Beiträge: 3.349
Herkunft: Darmstadt/Odw.
|
|
Titel: Y****** Merge_Doublepost Hack
Version: 1.2
Beschreibung: Hackname: Merge_Doublepost Hack
Autor: MrMind
Version: 1.2
Forenversion: 2.1.x
Zu veränderten Dateien:
- addreply.php
- thread.php
- acp/board.php
- acp/templates/board_add.htm
- acp/templates/board_edit.htm
Neue Dateien:
Keine
Installationsanweisung:
merge_setup.php, merge_post.wbb und merge_doublepost.lng in den acp-Ordner hochladen und durch http://ww.deinedomain.de/wbb2/acp/merge_setup.php im Browser öffnen und der Anweisung folgen. Nach erfolgreicher Installation müssen nun alle 3 Dateien wieder vom Server gelöscht werden
Einstellungsmöglichkeiten:
siehe Demo-Link
Funktionalität:
Diese Hack ermöglicht es, dass User Doppelpost erstellen können, jedoch nach dem Absenden und dem Anzeigen des Doppelpost wird ein Hinweis beim Posttopic angezeigt mit der Aufschrift Doppelpost wird automatisch zusammengefügt. Bei einem Refresh oder neuem Laden des Threads wird nun der doppelte Post zu dem ersten Post dazu "addiert". Je nach dem, ob im ACP eingestellt wurde, dass ein weiterer Hinweis im ersten Post darauf hinweisen soll, wird dieser zwischen der Nachricht vom originalen Post und der Nachricht aus dem doppelten Post gehängt (in der Demo sieht man dies). Desweiteren wird die Posttime vom doppelten Post auf den alten Post übertragen und somit als "ungelesen" Deklariert.
Über Foren bearbeiten kann man diese Option forenspezifisch ausschalten lassen.
Copyright:
Copyright liegt bei mir. Der Copyright im Quelltext kann gerne gelöscht werden, dient allerdings dazu, den Code besser zu deuten und zu finden, wenn Probleme auftreten oder diesen ausbauen möchte. Desweiteren ist bei der neuen Klassenmethode in der thread.php sehr viele Kommentare angebracht, die User helfen sollen, den Code zu verstehen. Bei Bedarf kann das gelöscht werden. Dieser Hack darf aber nicht als eigener ausgeben werden.
Sonstiges:
Dieser Hack darf nur auf y****** angeboten werden.
Bekannte Bugs:
Wenn in dem Post, welcher dann zusammengefügt werden soll, ein Attachment vorhanden ist, dann wird dieses nicht mitverknüpft. Leider noch keine Lösung vorhanden, da ein mehrfach Upload für diese Boardversion von Haus aus nicht möglich ist
Getestete Forenversion:
wBB 2.1.6
Changelog:
Von Version 1.0 auf 1.1
thread.php
Suche nach:
php: |
1:
|
$sql = "UPDATE bb".$n."_posts SET message= '" . $new_message ."', posttime='" . $row['posttime'] . "' WHERE postid='" . $row['merge_postid'] . "'"; |
|
Ersetzen mit:
php: |
1:
|
$sql = "UPDATE bb".$n."_posts SET message= '" . addslashes($new_message) ."', posttime='" . $row['posttime'] . "' WHERE postid='" . $row['merge_postid'] . "'"; |
|
thread.php
Suche nach:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
|
function nextoldest() {
global $db, $n, $thread, $boardid, $tpl, $lang, $threadid, $wbbuserdata, $REMOTE_ADDR;
$result = $db->query_first("SELECT threadid FROM bb".$n."_threads WHERE visible = 1 AND lastposttime<'$thread[lastposttime]' AND closed <> 3 AND boardid = '$boardid' ORDER BY lastposttime DESC",1);
if(!$result['threadid']) error($lang->get("LANG_THREAD_ERROR_NONEXTOLDEST"));
$threadid=$result['threadid'];
$this->threadid=$threadid;
$select = ", v.id AS isvoted";
$join = " LEFT JOIN bb".$n."_votes v ON (v.id=t.threadid AND v.votemode=2 AND ".(($wbbuserdata['userid']) ? ("v.userid='".$wbbuserdata['userid']."'") : ("v.ipaddress='".addslashes($REMOTE_ADDR)."'")).")";
if ($wbbuserdata['userid']) {
$select .= ", tv.lastvisit, s.emailnotify, s.countemails";
$join .= " LEFT JOIN bb".$n."_threadvisit tv ON (tv.threadid=t.threadid AND tv.userid='".$wbbuserdata['userid']."')
LEFT JOIN bb".$n."_subscribethreads s ON (s.userid='".$wbbuserdata['userid']."' AND s.threadid=t.threadid)";
}
$thread = $db->query_first("SELECT t.*".$select." FROM bb".$n."_threads t".$join." WHERE t.threadid = '".$this->threadid."'");
}
function makePagelink() {
global $session, $threadview, $hilight, $hilightuser, $showpagelinks;
$this->pagelink=makepagelink("thread.php?threadid=".$this->threadid."&sid=$session[hash]&threadview=$threadview&hilight=".urlencode($hilight)."&hilightuser=$hilightuser",$this->page,$this->pages,$showpagelinks-1);
}
function readPosts() {
global $docensor, $board, $wbbuserdata, $hilight, $usecode, $showuserfieldsinthread, $db, $n, $showavatar, $authormarking, $lang;
$this->parse = new parse($docensor,75,$wbbuserdata['showimages'],$hilight,$usecode);
if($showuserfieldsinthread==1) {
$userfields=", uf.*";
$userfieldsjoin="LEFT JOIN bb".$n."_userfields uf ON (uf.userid=p.userid)";
$result=$db->unbuffered_query("SELECT profilefieldid, title, fieldtype FROM bb".$n."_profilefields WHERE showinthread=1".(($wbbuserdata['a_can_use_acp']==0) ? (" AND hidden=0") : (""))." ORDER BY fieldorder ASC");
while($row=$db->fetch_array($result)) {
$row['title']=getlangvar($row['title'], $lang);
$this->userfieldcache[]=$row;
}
}
else {
$userfields="";
$userfieldsjoin="";
}
if($showavatar==1) {
$avatar=", av.avatarid, av.avatarextension, av.width, av.height";
$avatarjoin="LEFT JOIN bb".$n."_avatars av ON (u.avatarid=av.avatarid)";
}
else {
$avatar="";
$avatarjoin="";
}
if($authormarking==1) {
$marking=", g.useronlinemarking";
$markingjoin="LEFT JOIN bb".$n."_groups g ON (u.useronlinegroupid=g.groupid)";
}
else {
$marking="";
$markingjoin="";
}
$result = $db->query("SELECT p.*,
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)
$userfieldsjoin
$avatarjoin
$markingjoin
WHERE p.postid IN (0".$this->postids.")".$this->orderBy);
return $result;
} |
|
Darunter einfügen:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
|
/**
* @param integer threadid
* Merge Doublepost by MrMind
*/
function merge_post( $threadid )
{
global $db, $n, $merge_doublepost_text, $merge_doublepost, $docensor, $usecode, $board, $wbbuserdata;
/*
** Pruefung, ob automatische Zusammenfuegen erlaubt ist
*/
if( $merge_doublepost && empty($board['merge_disable']) )
{
/*
** Lade Postinformationen fuer die zu loeschenden Beitraege
*/
$sql = "SELECT postid, message, attachments, userid, username, posttime, allowsmilies, allowhtml, allowbbcode, allowimages, merge_postid FROM bb".$n."_posts WHERE threadid='".$threadid."' AND merge_postid != '0' AND merge_show = '1'";
$result = $db->query($sql);
while( $row = $db->fetch_array($result) )
{
/*
** Initialisierung fuer den anhaengenden Text
*/
$merge_add_text = "\n\n";
/*
** Soll ein Text als Hinweis eingefuegt werden?
*/
if( !empty($merge_doublepost_text) )
{
/*
** Ersetzen der Variable %username%
*/
$merge_doublepost_text = str_replace('%username%', $row['username'], $merge_doublepost_text);
/*
** Anhaengen an die Variable $merge_add_text
*/
$merge_add_text .= $merge_doublepost_text . "\n\n";
}
// Übergeben der Attachments aus neuen an alten Post
$attach_merge = $row['attachments'];
$sql = "SELECT attachments FROM bb".$n."_posts WHERE postid = '" . $row['merge_postid'] . "'";
$attach_post = $db->query_first($sql);
$attach_npost = $attach_post['attachments'];
$attach_npost = $attach_npost + $attach_merge;
/*
** Auslesen des letzten Beitrages an dem der Text zusammengefuegt werden soll
*/
$sql = "SELECT message FROM bb".$n."_posts WHERE postid = '" . $row['merge_postid'] . "'";
$merge_post = $db->query_first($sql);
/*
** Alter Text mit dem Texthinweis und dem zusammenzufuegenden Text vereinen
*/
$new_message = $merge_post['message'] . $merge_add_text . $row['message'];
/*
** Update des alten Textes
*/
$sql = "UPDATE bb".$n."_posts SET message= '" . addslashes($new_message) ."', posttime='" . $row['posttime'] . "', attachments='" . $attach_npost . "' WHERE postid='" . $row['merge_postid'] . "'";
$db->query($sql);
/*
** Update der attachment-Tabelle
*/
$sql = "UPDATE bb".$n."_attachments SET postid= '" . $row['merge_postid'] ."' WHERE postid='" . $row['postid'] . "'";
$db->query($sql);
/*
** Update der postcache-Tabelle
*/
$parse = &new parse($docensor, 75, 1, '', $usecode, 1, 1);
$cache = $parse->doparse($new_message, $row['allowsmilies'], $row['allowhtml'], $row['allowbbcode'], $row['allowimages']);
$sql = "REPLACE INTO bb".$n."_postcache (postid, threadid, cache) VALUES ('" . $row['merge_postid'] . "', '" . $threadid . "', '" . addslashes($cache) . "')";
$db->query($sql);
unset($parse);
/*
** Loeschen des alten Beitrages aus der posts-Tabelle
*/
$sql = "DELETE FROM bb".$n."_posts WHERE postid='" . $row['postid'] . "' LIMIT 1";
$db->query($sql);
/*
** Loeschen des alten Beitrages aus der postcache-Tabelle
*/
$sql = "DELETE FROM bb".$n."_postcache WHERE postid = '" . $row['postid'] . "' LIMIT 1";
$db->query($sql);
/*
** Update der boards-Tabelle (postcount und lastposttime)
*/
$sql = "UPDATE bb".$n."_boards SET postcount= postcount - 1, lastposttime='" . $row['posttime'] . "' WHERE boardid='" . $board['boardid'] . "'";
$db->query($sql);
/*
** Update der threads-Tabelle (replycount und lastposttime)
*/
$sql = "UPDATE bb".$n."_threads SET replycount = replycount - 1, lastposttime = '" . $row['posttime'] . "' WHERE threadid = '" . $threadid . "'";
$db->query($sql);
/*
** Werden in dem Forum Posts gezaehlt?
*/
if( $board['countuserposts'] )
{
/*
** Update der users-Tabelle fuer die Beitragszaehlung
*/
$sql = "UPDATE bb".$n."_users SET userposts = userposts - 1 WHERE userid = '" . $row['userid'] . "'";
$db->query($sql);
}
}
/*
** Setzten der Doppelpostings auf SHOW, um beim naechsten Aufruf zu vereinen
*/
$sql = "UPDATE bb".$n."_posts SET merge_show='1' WHERE threadid='" . $threadid . "' AND merge_postid != '0'";
$db->query($sql);
}
} |
|
Suche nach:
php: |
1:
|
class FlatThread extends Thread { |
|
Danach weitersuchen nach:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
|
/**
* @param integer threadid
* Merge Doublepost by MrMind
*/
function merge_post( $threadid )
{
global $db, $n, $merge_doublepost_text, $merge_doublepost, $docensor, $usecode, $board, $wbbuserdata;
/*
** Pruefung, ob automatische Zusammenfuegen erlaubt ist
*/
if( $merge_doublepost && empty($board['merge_disable']) )
{
/*
** Lade Postinformationen fuer die zu loeschenden Beitraege
*/
$sql = "SELECT postid, message, userid, username, posttime, allowsmilies, allowhtml, allowbbcode, allowimages, merge_postid FROM bb".$n."_posts WHERE threadid='".$threadid."' AND merge_postid != '0' AND merge_show = '1'";
$result = $db->query($sql);
while( $row = $db->fetch_array($result) )
{
/*
** Initialisierung fuer den anhaengenden Text
*/
$merge_add_text = "\n\n";
/*
** Soll ein Text als Hinweis eingefuegt werden?
*/
if( !empty($merge_doublepost_text) )
{
/*
** Ersetzen der Variable %username%
*/
$merge_doublepost_text = str_replace('%username%', $row['username'], $merge_doublepost_text);
/*
** Anhaengen an die Variable $merge_add_text
*/
$merge_add_text .= $merge_doublepost_text . "\n\n";
}
/*
** Auslesen des letzten Beitrages an dem der Text zusammengefuegt werden soll
*/
$sql = "SELECT message FROM bb".$n."_posts WHERE postid = '" . $row['merge_postid'] . "'";
$merge_post = $db->query_first($sql);
/*
** Alter Text mit dem Texthinweis und dem zusammenzufuegenden Text vereinen
*/
$new_message = $merge_post['message'] . $merge_add_text . $row['message'];
/*
** Update des alten Textes
*/
$sql = "UPDATE bb".$n."_posts SET message= '" . addslashes($new_message) ."', posttime='" . $row['posttime'] . "' WHERE postid='" . $row['merge_postid'] . "'";
$db->query($sql);
/*
** Update der postcache-Tabelle
*/
$parse = &new parse($docensor, 75, 1, '', $usecode, 1, 1);
$cache = $parse->doparse($new_message, $row['allowsmilies'], $row['allowhtml'], $row['allowbbcode'], $row['allowimages']);
$sql = "REPLACE INTO bb".$n."_postcache (postid, threadid, cache) VALUES ('" . $row['merge_postid'] . "', '" . $threadid . "', '" . addslashes($cache) . "')";
$db->query($sql);
unset($parse);
/*
** Loeschen des alten Beitrages aus der posts-Tabelle
*/
$sql = "DELETE FROM bb".$n."_posts WHERE postid='" . $row['postid'] . "' LIMIT 1";
$db->query($sql);
/*
** Loeschen des alten Beitrages aus der postcache-Tabelle
*/
$sql = "DELETE FROM bb".$n."_postcache WHERE postid = '" . $row['postid'] . "' LIMIT 1";
$db->query($sql);
/*
** Update der boards-Tabelle (postcount und lastposttime)
*/
$sql = "UPDATE bb".$n."_boards SET postcount= postcount - 1, lastposttime='" . $row['posttime'] . "' WHERE boardid='" . $board['boardid'] . "'";
$db->query($sql);
/*
** Update der threads-Tabelle (replycount und lastposttime)
*/
$sql = "UPDATE bb".$n."_threads SET replycount = replycount - 1, lastposttime = '" . $row['posttime'] . "' WHERE threadid = '" . $threadid . "'";
$db->query($sql);
/*
** Werden in dem Forum Posts gezaehlt?
*/
if( $board['countuserposts'] )
{
/*
** Update der users-Tabelle fuer die Beitragszaehlung
*/
$sql = "UPDATE bb".$n."_users SET userposts = userposts - 1 WHERE userid = '" . $row['userid'] . "'";
$db->query($sql);
}
}
/*
** Setzten der Doppelpostings auf SHOW, um beim naechsten Aufruf zu vereinen
*/
$sql = "UPDATE bb".$n."_posts SET merge_show='1' WHERE threadid='" . $threadid . "' AND merge_postid != '0'";
$db->query($sql);
}
} |
|
Das LÖSCHEN!
Suche nach:
php: |
1:
2:
|
function FlatThread($threadid) {
$this->threadid = $threadid; |
|
Darunter einfügen:
php: |
1:
2:
3:
4:
5:
6:
7:
|
/*
** Merge Doublepost by MrMind
*/
$this->merge_post( $threadid );
/*
** Merge Doublepost by MrMind
*/ |
|
Viel Spaß bei dem Hack.
Mfg
MrMind
----
Demo: http://www.mindcoder.org/hacks/merge_pos...blepost_21.html
weiter zum Download
__________________
Selbst ist der Coder
Coder under Linux
Ubuntu 5.10 Nutzer.
Meine Hacks
|
|
02.04.06 22:19 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Agi
TEAM - PHP Freak
Dabei seit: 22.11.04
Beiträge: 2.628
Fähigkeiten: WBB3 Profi Forenversion: 3.1
|
|
Geile Sache dieser Hack.
Ne Frage, gibts den vlt auch eines Tages fürs WBB2.3 ? ^^
__________________
|
|
03.04.06 00:00 |
Finden
Als Freund hinzufügen
|
|
Agi
TEAM - PHP Freak
Dabei seit: 22.11.04
Beiträge: 2.628
Fähigkeiten: WBB3 Profi Forenversion: 3.1
|
|
sry total übersehen, weil er auf wichtig oben steht
THX
__________________
|
|
03.04.06 00:31 |
Finden
Als Freund hinzufügen
|
|
the_cRu
Mitglied
Dabei seit: 25.04.06
Beiträge: 94
Herkunft: .dE! Forenversion: .2.1.6!
|
|
kann hier kein support mehr gegeben werden?
finds echt traurig,...
es werden hacks erstellt, paar wochen supported und dann ist finito...
traurig
__________________ ...
|
|
02.11.06 12:17 |
E-Mail
Finden
Als Freund hinzufügen
|
|
Agi
TEAM - PHP Freak
Dabei seit: 22.11.04
Beiträge: 2.628
Fähigkeiten: WBB3 Profi Forenversion: 3.1
|
|
Zitat: |
Original von the_cRu
kann hier kein support mehr gegeben werden?
finds echt traurig,...
es werden hacks erstellt, paar wochen supported und dann ist finito...
traurig |
Die Tabelle bb1_postcache existiert bei dir scheinbar nicht.
Führe in phpMyAdmin mal diesen Sql Befehl aus und teste es danach erneut:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
|
DROP TABLE IF EXISTS bb1_postcache;
CREATE TABLE bb1_postcache (
postid int(11) unsigned NOT NULL auto_increment,
threadid int(11) unsigned NOT NULL default '0',
cache mediumtext NOT NULL default '',
PRIMARY KEY (postid),
KEY threadid (threadid)
) TYPE=MyISAM; |
|
@mastermind: Überprüfe den Einbau nochmal, denn er sagt, dass die Funktion die hier aufgerufen wird, nicht existiert
__________________
|
|
02.11.06 12:26 |
Finden
Als Freund hinzufügen
|
|
the_cRu
Mitglied
Dabei seit: 25.04.06
Beiträge: 94
Herkunft: .dE! Forenversion: .2.1.6!
|
|
Zitat: |
Original von Agi
Die Tabelle bb1_postcache existiert bei dir scheinbar nicht.
Führe in phpMyAdmin mal diesen Sql Befehl aus und teste es danach erneut:
|
ich danke dir,
nun läuft es richtig!
__________________ ...
|
|
02.11.06 13:42 |
E-Mail
Finden
Als Freund hinzufügen
|
|
|