YourWBB


yourWBB » WoltLab Burning Board Generation 2 * » Alles von und für das WBB 2.2.x » [WBB 2.2.x] Hacks und Addons » YourWBB Merge_Doublepost Hack » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 5.186 Views | | Thema zu Favoriten hinzufügen

Neues Thema erstellen Antwort erstellen

Zum Ende der Seite springen YourWBB Merge_Doublepost Hack
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
MrMind MrMind ist männlich
Sklave des Supportes


images/avatars/avatar-2822.gif

Dabei seit: 19.01.04
Beiträge: 3.349
Herkunft: Darmstadt/Odw.

 YourWBB Merge_Doublepost Hack Antworten Zitieren Editieren Melden       UP

Titel: Y****** Merge_Doublepost Hack
Version: 1.2
Beschreibung: Hackname: Merge_Doublepost Hack
Autor: MrMind
Version: 1.2
Forenversion: 2.2.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.2.2

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'] . "'";



Von Version 1.1 auf 1.2


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:
/**
    * read post information from database
    *
    * @return resource result
    */
    function readPosts() {
        global $docensor$board$wbbuserdata$hilight$usecode$showuserfieldsinthread$db$n$showavatar$authormarking$lang; 
        $this->parse = &new parse($docensor75$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_view_hidden'] == 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.*, 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);
        
        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($docensor751''$usecode11);
              $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($docensor751''$usecode11);
              $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_22.html

weiter zum Download


__________________
Selbst ist der Coder
Coder under Linux

Ubuntu 5.10 Nutzer.

Meine Hacks

02.04.06 22:17 MrMind ist offline E-Mail Finden Als Freund hinzufügen
Baret
Mitglied


Dabei seit: 29.05.04
Beiträge: 18

Antworten Zitieren Editieren Melden       UP

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
# Suche weiter nach:
####################

            /* insert post */
            $db->query("INSERT INTO bb".$n."_posts (parentpostid,threadid,userid,username,iconid,posttopic,posttime,message,attachmentid,allowsmilies,allowhtml,allowbbcode,allowimages,showsignature,ipaddress,visible
            
# Dahinter einfügen:
####################

" $merge_field_sql "


# Suche weiter nach:
####################

            ('$postid','$threadid','$wbbuserdata[userid]','".addslashes($wbbuserdata['username'])."','$iconid','".addslashes($topic)."','$time','".addslashes($message)."','$attachment_id','$allowsmilies','$allowhtml','$allowbbcode','$allowimages','".$showsignature."','".addslashes($REMOTE_ADDR)."','".(($board['moderatenew'] == || $board['moderatenew'] == 11) ? (0) : (1))."'
            
# Dahinter einfügen:
####################

" $merge_value_sql "


Ersteres scheint in der Anleitung nicht korrekt zu sein.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Baret: 03.04.06 22:28.

03.04.06 22:28 Baret ist offline E-Mail Finden Als Freund hinzufügen
MrMind MrMind ist männlich
Sklave des Supportes


images/avatars/avatar-2822.gif

Dabei seit: 19.01.04
Beiträge: 3.349
Herkunft: Darmstadt/Odw.

Themenstarter Thema begonnen von MrMind
Antworten Zitieren Editieren Melden       UP

Was soll daran falsch sein Augenzwinkern

Ne ne, keine Sorge, alles in Ordnung. In den Variablen sind die Kommas definiert großes Grinsen

PS: Version 1.2 erschienen

Mfg
MrMind

__________________
Selbst ist der Coder
Coder under Linux

Ubuntu 5.10 Nutzer.

Meine Hacks

04.04.06 13:43 MrMind ist offline E-Mail Finden Als Freund hinzufügen
ProfJack ProfJack ist männlich
Mitglied


images/avatars/avatar-4268.jpg

Dabei seit: 13.11.05
Beiträge: 610

Antworten Zitieren Editieren Melden       UP

Hallo!


Wie kann ich die Zeit anzeigen lassen, wann die Erweiterung vom User eingetragen wurde?

Gruß Jakob

EDIT:// ist leider im falschen Forum gelandet ... 2.3 ... hab ich

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ProfJack: 29.04.06 14:07.

29.04.06 14:01 ProfJack ist offline E-Mail Finden Als Freund hinzufügen
Baumstruktur | Brettstruktur
Gehe zu:

Neues Thema erstellen Antwort erstellen

yourWBB » WoltLab Burning Board Generation 2 * » Alles von und für das WBB 2.2.x » [WBB 2.2.x] Hacks und Addons » YourWBB Merge_Doublepost Hack