YourWBB


yourWBB » WoltLab Burning Board Generation 2 * » Alles von und für das WBB 2.3.x » [WBB 2.3.x] Hacks und Addons » * itratos Linkback und Inline Ads 1.0.0 » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 10.399 Views | | Thema zu Favoriten hinzufügen

Neues Thema erstellen Antwort erstellen

Zum Ende der Seite springen * itratos Linkback und Inline Ads 1.0.0 4 Bewertungen - Durchschnitt: 7,754 Bewertungen - Durchschnitt: 7,754 Bewertungen - Durchschnitt: 7,75
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
JGS-XA Team JGS-XA Team ist männlich
Mitglied


images/avatars/avatar-4456.jpg

Dabei seit: 16.01.04
Beiträge: 112
Herkunft: Bamberg
Forenversion: 2.1.3

 * itratos Linkback und Inline Ads 1.0.0 Antworten Zitieren Editieren Melden       UP

Titel: * itratos Linkback und Inline Ads 1.0.0
Version: 1.0
Beschreibung: Hallo zusammen,

hiermit präsentieren wir euch die neueste WBB Erweiterung: Itratos Linkback und Inline Ads. Hinter diesem Namen steckt eine Erweiterung zur Optimierung der effektiven Umsätze des eigenen Forums. Bei steigender Userzahl steigen auch die Kosten für Support, Traffic und Co. Um euren Gewinn zu steigern bieten wir euch nun diesen exclusiven Hack an.

Was bietet Itratos Linkback und Inline Ads?
Dieser Hack beinhaltet 3 verschiedene ACP und Gruppenrechtssteuerbare Module:

DEMO: DEMO WBB Itratos Linkback und Inline Ads 1.0.0

- Inline Ads:
Unter einem Inline Ad, versteht man ein eingebettetes Werbemittel. In diesem Falle bieten wir den Usern die Möglichkeit zwischen Google AdSense, Ebay relevance Ads 2.0, WAI und Affilimatch zu wählen. Diese können zwischen verschiedenen Postings ganz beliebig platziert werden. Zur Konfiguration bieten wir 3 Code-generatoren und Auswahlmöglichkeiten zur Platzierung(Varianz, Wiederholung, abarbeitung der systeme, zufällige auswahl, etc) an.

- Automatische Beitragsumwandlung
Wenn aktiviert, werden Beiträge in denen Ebay oder Amazon Links vorhanden sind, kurz vor der Ausgabe auf dem Bildschirm von uns manipuliert. Ebay Links werden durch Affili.Net Ebaylinks ersetzt; Amazon Links erhalten eine Veränderung des Links durch die Amazon tracking ID. Es werden automatisch alle Links der Form http://cgi.ebay.de und http://www.amazon.de umgewandelt. Dadurch erschliesst sich eine zusätzliche Möglichkeit, noch an geposteten Links, ein paar Leads/Sales zu generieren.

- Auktionsintegration
Die Auktionsintegration erweitert das Profil des Users in der aktuellen Version um 5 Felder: Ebayname, MyVideo, Amazon Wunschliste, Aquariumbeispiele.de und Aquariumforum.de. Dabei ist vom Forenadministrator einstellbar, welche Verlinkungen implementiert werden sollen. Die ausgefüllten profilfelder werden dann bei jedem Posting, links unter dem Usernamen aufgelistet und linken zu den entsprechenden Diensten. Die Verlinkungen zu Ebay und MyVideo Seite generieren dabei Leads/Sales/Clicks über Affili.net. Der Amazon Link ermöglicht es über die trackingid Umsätze zu generieren. Die Links zum Dienste von Aquariumforum.de und Aquariumbeispiele.de sollen zeigen, wie wir uns eine Zusammenarbeit mit anderen Forenbetreibern in Zukunft vorstellen. Hierbei ermöglichen wir den Linkpartnern direkt, miteinander die Useraccounts zu verlinken, bzw. User von einem Board, die auch auf dem des Partners registriert sind, können zu Ihrem Profil oder beispielsweise Ihre Marktplatzauktionen oder Bildern der galerie verlinken.

Welche Voraussetzungen sollte ich erfüllen?
Um diese Erweiterung optimal nutzen zu können, ist ein Google AdSense Konto notwendig. Wenn Sie noch keines besitzen, so finden sie links im Menü unter dem "Guckloch" einen weissen Button, "Einnahmen mit Ihrer Website erzielen. Google AdSense testen". Dieser führt Sie direkt zur Seite des Dienstbetreibers.

Des Weiteren ist eine Affili.net ID von Vorteil. Diese erhällt man durch die Registrierung unter http://www.affili.net Affili.Net bietet als Dienstleister hunderte von effektiven Programmangeboten an. Für die Nutzung der ersten Version reicht es aber bei den Diensten "Ebay", "Affilimatch" und "WAI" angenommen zu werden. Diese schienen uns als eine gute Grundlage zur Auslieferung und erzielen gute Ergebnisse.

Die Amazon Tracking ID erhalte ich direkt bei Amazon.de in deren Partnerprogramm.

Installationsanleitung:
----
Demo: http://soundwbb.itratos.de/thread.php?postid=63#post63

weiter zum Download


__________________
Schöne Grüße

Timo

Link Tipp: Tragt Eure Communitys ein
Community Partner
PetVideo sucht Partner Communitys
01.03.07 13:59 JGS-XA Team ist offline E-Mail WWW Finden Als Freund hinzufügen
kankaz kankaz ist männlich
Mitglied


Dabei seit: 05.11.04
Beiträge: 103
Herkunft: Wuppertal ( Türkei )
Forenversion: 2.3

 RE: * itratos Linkback und Inline Ads 1.0.0 Antworten Zitieren Editieren Melden       UP

Das Ist Wirklich Super , werde ich Morgen direk ausprobieren Blume
03.03.07 01:01 kankaz ist offline E-Mail WWW Finden Als Freund hinzufügen MSN Passport-Profil von kankaz anzeigen
JGS-XA Team JGS-XA Team ist männlich
Mitglied


images/avatars/avatar-4456.jpg

Dabei seit: 16.01.04
Beiträge: 112
Herkunft: Bamberg
Forenversion: 2.1.3

Themenstarter Thema begonnen von JGS-XA Team
 RE: * itratos Linkback und Inline Ads 1.0.0 Antworten Zitieren Editieren Melden       UP

Hallo kankaz,

und sag mal bescheid, wir leben ja von Infos großes Grinsen

__________________
Schöne Grüße

Timo

Link Tipp: Tragt Eure Communitys ein
Community Partner
PetVideo sucht Partner Communitys
04.03.07 15:14 JGS-XA Team ist offline E-Mail WWW Finden Als Freund hinzufügen
FunBoard4You FunBoard4You ist männlich
Mitglied


Dabei seit: 10.12.06
Beiträge: 143
Fähigkeiten: WBB3 Profi; WBB2 Fortgeschritten; WBB Lite 2 Anfänger
Herkunft: Euskirchen
Forenversion: 3.0

Antworten Zitieren Editieren Melden       UP

Ich habe mich wirklich gefreut, dass du endlich mal wieder was von dir hören lässt, Timo. Dann direkt mit so einem klasse Addon, aber was anderes hab ich eh nicht von euch erwartet. Zunge raus

Eingebaut, Aktiviert - einfach geil!
04.03.07 15:25 FunBoard4You ist offline E-Mail WWW Finden Als Freund hinzufügen
JGS-XA Team JGS-XA Team ist männlich
Mitglied


images/avatars/avatar-4456.jpg

Dabei seit: 16.01.04
Beiträge: 112
Herkunft: Bamberg
Forenversion: 2.1.3

Themenstarter Thema begonnen von JGS-XA Team
Antworten Zitieren Editieren Melden       UP

Hallo FunBoard4You,

danke, aber ich war doch nie weg großes Grinsen im Gegenteil

Wo hast du das System den laufen

In der Szene wir es sehr gut angenommen, scheint mal wirklich wieder den Nagel auf den Kopf getroffen zu haben, der Bedarf wurde also erkannt und befriedigt großes Grinsen

Quelle yoome.de Autor Eisy
Zitat:
Linkback und Inline Ads 1.0.0

Der Hersteller Itratos, bekannt von der Seite JGS-XA hat jetzt sein neues System zur Verwaltung von Werbepartnern und das managen von eBay und Amazon Links fertiggestellt. Linkback und Inline Ads 1.0.0 ist der neue Name dieses Produktes. Das System ist eine kostenlose Erweiterung für die Forensoftware Burning Board 2 und bietet jeden Administrator eine einfache Oberfläche zur Verwaltung von Werbekampagnen.

Mit dieser Software wird es ermöglicht auf einfachsten Weg im Adminbereich Werbung einzustellen und zu managen. Die Werbeanzeigen wie beispielsweise AdSense, eBay oder normale Bannerwerbung von Kunden lassen sich auf einfachsten Weg zwischen den Beiträgen in der Community einbinden. Sie haben die Möglichkeit über die Verwaltung selber zu entscheiden an welcher Position die Werbung geschaltet wird. So können Sie wählen ob eine Werbung direkt nach dem ersten Beitrag geschaltet wird oder ob es erst nach dem vierten oder fünften Beitrag eingebunden wird. Ebenso haben Sie bei diesen System die Möglichkeit zu entscheiden in welchen Abständen die Werbung eingeblendet wird. Sie können dabei wählen ob nach jeden Beitrag ein Werbeblock kommt, nach jeden zweiten oder nach jeden dritten. Diese Einstellungen sind noch weitaus komplexer, auch nach jeden zehnten Beitrag lässt sich Werbung einbinden.

Es lässt sich über die Verwaltung im Adminbereich auch einstellen ob beispielsweise bei AdSense Werbung nur Text, Bild oder Bild und Text gezeigt werden sollen. Bei diesem System ist es dem Administrator sehr einfach gemacht wurden. Es ist nun mit der Software Burning Board 2 eine hervorragende Verwaltung der Werbekampagnen möglich. Ein nach langer Zeit sehr empfehlenswertes und dazu noch kostenloses System.


Ich danke dir und allen anderen die uns kennen

__________________
Schöne Grüße

Timo

Link Tipp: Tragt Eure Communitys ein
Community Partner
PetVideo sucht Partner Communitys
07.03.07 15:09 JGS-XA Team ist offline E-Mail WWW Finden Als Freund hinzufügen
Maniac_81 Maniac_81 ist männlich
PHP Profi


images/avatars/avatar-5230.gif

Dabei seit: 27.06.06
Beiträge: 2.087
Fähigkeiten: WBB3 Anfänger; WBB2 Profi
Herkunft: localhost/
Forenversion: 2.3; Lite 2.0

Antworten Zitieren Editieren Melden       UP

ich bekomm nen fehler in der thread.php

Fatal error: Call to undefined function: generate_() in E:\Xampp\xampp\htdocs\lausch\thread.php on line 400

is eigentlich alles so eingebaut wie es soll. er erkennt ur die funktion nicht. sogar die Varianz is auf einen höheren wert eingestellt. kann keine beiträge mehr aufrufen weder antworten.
Es ist noch nichts eingetragen ind den feldern ausser bei Varianz.
Der fehler tritt bei mir nur auf wenn die werte bei Varianz höher sind als die vorhandenen Posts. also sobald posts==wert -->fehler


zeile 350-hackende:

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:
if ($showuserpostsinthread == && $posts['userposts'] >= 1000$posts['userposts'] = number_format($posts['userposts'], 0""$lang->get("LANG_GLOBAL_THOUSANDS_SEP")); 
            /** Abwesendheitshack by Speedrider Anfang**/
$LANG_MEMBERS_USERAWAY $lang->get("LANG_AWAY_MEMBERS_ONLINE_AWAY", array('$username' => $username));
$datefrom explode("-",$posts[away_from]);
                        $dateto explode("-",$posts[away_to]);

                        $away_message $posts['away_message'];
                        $away $posts['away'];
/** Abwesendheitshack by Speedrider Ende**/
        }
        /**
         * Itratos Inline Ad Start
         */
        if($wbbuserdata['can_view_inline_ad']!=0){
            $postbit "";
            $ads_length count($ads);
            if ($ads_akt $ads_length-1)
                $ads_akt 0;
            if($varianz1 == and $count == 0) {
                if ($random == 1) {
                    srand((double)microtime()*1000000);
                    $erg mt_rand() % $ads_length;
                    $Nick $ads[$erg];
                }
                else {
                    $Nick $ads[$ads_akt];
                    $ads_akt++;
                }
                $inline_ad_nick $Nick;
                $strto "generate_".strtolower($Nick);
                $google $strto();
                eval("\$postbit = \"".$tpl->get("itratos_linkback_inline_ad")."\";");
                $count++;
                $tdclass getone($count'tableb''tablea');
            }
            if (($count>and $count == $varianz1) or ($count>and (($count $varianz1) % $varianz) == and $count >= $varianz1))
            {
                if ($random == 1) {
                    srand((double)microtime()*1000000);
                    $erg mt_rand() % $ads_length;
                    $Nick $ads[$erg];
                }
                else {
                    $Nick $ads[$ads_akt];
                    $ads_akt++;
                }
                $inline_ad_nick $Nick;
                $strto "generate_".strtolower($Nick);
                $google $strto();
                eval("\$postbit = \"".$tpl->get("itratos_linkback_inline_ad")."\";");
                $count++;
                $tdclass getone($count'tableb''tablea');
            }
        }
        /**
         * Itratos Inline Ad End
         */
        
        eval("\$postbit = \"".$tpl->get("thread_postbit")."\";");
        return $postbit;
    }


__________________
zufrieden mit meinem Support? dann hier bitte bewerten!

Sie haben 3 gelbe Bananen gewählt!

ÄPFEL! 3!!!

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Maniac_81: 28.06.07 08:06.

28.06.07 07:16 Maniac_81 ist offline E-Mail WWW Finden Als Freund hinzufügen Füge Maniac_81 in deine Kontaktliste ein MSN Passport-Profil von Maniac_81 anzeigen
mine mine ist weiblich
Mitglied


images/avatars/avatar-3984.jpg

Dabei seit: 16.09.05
Beiträge: 52
Herkunft: bei Hannover
Forenversion: 2.3; Lite 1.0

Antworten Zitieren Editieren Melden       UP

Hallo!

In meinem einen Forum funktioniert der Hack super und ich wollte mich einfach mal bedanken Freude

Nun habe ich mit meinem neuen Board ein Problem. InlineADs geht soweit - nur wird trotz korrekter Einstellung zwischen den Beiträgen nichts angezeigt. In der Anleitung heißt es in der thread.php:

code:
1:
2:
3:
4:
5:
if ($showuserpostsinthread == 1 && $posts['userposts'] >= 1000) $posts['userposts'] = number_format($posts['userposts'], 0, "", $lang->get("LANG_GLOBAL_THOUSANDS_SEP"));
        }
        eval("\$postbit .= \"".$tpl->get("thread_postbit")."\";");
        return $postbit;
    }


Wenn ich das aber mit eurem Code ersetzen möchte, lösche ich mir einen anderen Hack. Der klebt dazwischen. Anbei mal meine thread.php nach dem Einbau OHNE diese Stelle:

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:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:
595:
596:
597:
598:
599:
600:
601:
602:
603:
604:
605:
606:
607:
608:
609:
610:
611:
612:
613:
614:
615:
616:
617:
618:
619:
620:
621:
622:
623:
624:
625:
626:
627:
628:
629:
630:
631:
632:
633:
634:
635:
636:
637:
638:
639:
640:
641:
642:
643:
644:
645:
646:
647:
648:
649:
650:
651:
652:
653:
654:
655:
656:
657:
658:
659:
660:
661:
662:
663:
664:
665:
666:
667:
668:
669:
670:
671:
672:
673:
674:
675:
676:
677:
678:
679:
680:
681:
682:
683:
684:
685:
686:
687:
688:
689:
690:
691:
692:
693:
694:
695:
696:
697:
698:
699:
700:
701:
702:
703:
704:
705:
706:
707:
708:
709:
710:
711:
712:
713:
714:
715:
716:
717:
718:
719:
720:
721:
722:
723:
724:
725:
726:
727:
728:
729:
730:
731:
732:
733:
734:
735:
736:
737:
738:
739:
740:
741:
742:
743:
744:
745:
746:
747:
748:
749:
750:
751:
752:
753:
754:
755:
756:
757:
758:
759:
760:
761:
762:
763:
764:
765:
766:
767:
768:
769:
770:
771:
772:
773:
774:
775:
776:
777:
778:
779:
780:
781:
782:
783:
784:
785:
786:
787:
788:
789:
790:
791:
792:
793:
794:
795:
796:
797:
798:
799:
800:
801:
802:
803:
804:
805:
806:
807:
808:
809:
810:
811:
812:
813:
814:
815:
816:
817:
818:
819:
820:
821:
822:
823:
824:
825:
826:
827:
828:
829:
830:
831:
832:
833:
834:
835:
836:
837:
838:
839:
840:
841:
842:
843:
844:
845:
846:
847:
848:
849:
850:
851:
852:
853:
854:
855:
856:
857:
858:
859:
860:
861:
862:
863:
864:
865:
866:
867:
868:
869:
870:
871:
872:
873:
874:
875:
876:
877:
878:
879:
880:
881:
882:
883:
884:
885:
886:
887:
888:
889:
890:
891:
892:
893:
894:
895:
896:
897:
898:
899:
900:
901:
902:
903:
904:
905:
906:
907:
908:
909:
910:
911:
912:
913:
914:
915:
916:
917:
918:
919:
920:
921:
922:
923:
924:
925:
926:
927:
928:
929:
930:
931:
932:
933:
934:
935:
936:
937:
938:
939:
940:
941:
942:
943:
944:
945:
946:
947:
948:
949:
950:
951:
952:
953:
954:
955:
956:
957:
958:
959:
960:
961:
962:
963:
964:
965:
966:
967:
968:
969:
970:
971:
972:
973:
974:
975:
976:
977:
978:
979:
980:
981:
982:
983:
984:
985:
986:
987:
988:
989:
990:
991:
992:
993:
994:
995:
996:
997:
998:
999:
1000:
<?php
// ************************************************************************************//
// * WoltLab Burning Board 2
// ************************************************************************************//
// * Copyright (c) 2001-2004 WoltLab GmbH
// * Web           http://www.woltlab.de/
// * License       http://www.woltlab.de/products/burning_board/license_en.php
// *               http://www.woltlab.de/products/burning_board/license.php
// ************************************************************************************//
// * WoltLab Burning Board 2 is NOT free software.
// * You may not redistribute this package or any of it's files.
// ************************************************************************************//
// * $Date: 2006-09-25 12:41:52 +0200 (Mo, 25 Sep 2006) $
// * $Author: Burntime $
// * $Rev: 1716 $
// ************************************************************************************//


$filename 'thread.php';

require('./global.php');
require('./acp/lib/class_parse.php');
$lang->load('POST,POSTINGS,THREAD,MEMBERS'); 

if ((!isset($postid) && !isset($threadid)) || $thread['closed'] == 3error($lang->get("LANG_GLOBAL_ERROR_FALSELINK", array('$adminmail' => $adminmail)));
if (!checkpermissions("can_read_thread")) access_error();






/**
 * Itratos Linkback Start
 */
require("itratos_linkback_include.inc.php");
/**
 * Itratos Linkback Ende
 */
/** Thread Class **/
class Thread {
    /**
    * @var integer threadid
    */
    var $threadid 0;

    /**
    * @var string pagelink
    */
    var $pagelink "";

    /**
    * @var integer page
    */
    var $page 0;

    /**
    * @var integer pages
    */
    var $pages 0;

    /**
    * @var string postids
    */
    var $postids ""; 

    /**
    * @var string orderby
    */
    var $orderBy "";

    /**
    * @var array userfieldcache
    */
    var $userfieldcache = array();

    /**
    * @var object parse
    */
    var $parse;
    
    /**
    * @var array attachmentArray
    */
    var $attachmentArray = array();
    
    /**
    * @var boolean readAttachments
    */
    var $readAttachments false;
    
    /**
    * parse a message and generate postbit
    *
    * @param array posts
    * @param integer count
    * @param integer indentwidth
    *
    * @return string postbit
    */
    function makePostBit($posts$count$indentwidth 0) {
        global $thread$showuserratings$board$tpl$wbbuserdata$style$lang$session$userratings$showuserratinginthread$showuserlevels$showonlineinthread$useronlinetimeout$showregdateinthread$showuserfieldsinthread$showgenderinthread$showavatar$_GET$showthreadstarter$showuserpostsinthread$allowsigsmilies$allowsightml$allowsigbbcode$max_sig_image$authormarking$picmaxwidth$picmaxheight$allowflashavatar$thumbnailsperrow$SID_ARG_1ST$SID_ARG_2ND$SID_ARG_2ND_UN$db$n$str$userlinkarray$varianz1$varianz$ads$random$ads_akt$aafili$aamazon;
        if ($this->userfieldcachereset($this->userfieldcache);
        $userrating '';
        $signature '';
        $lastedit '';
        $user_online '';
        $userfields '';
  $useravatar "<img src=\"{$style['imagefolder']}/noavatar.gif\" border=\"0\" alt=\"\" />";
  $rankimages '';
        $setvisible '';
        $userlevel '';
        $posts['username'] = htmlconverter($posts['username']);
        $username $posts['username'];
        
        /** mod / admin option -> set visible post **/
        if ($posts['visible'] == && $posts['posttime'] != $thread['starttime']) $invisible 1;
        else $invisible 0;
        
        $tdclass getone($count'tableb''tablea');
        
        // use postcache if possible
        if ($posts['cache']) $posts['message'] = $this->parse->parseCache($posts['cache']);
        else $posts['message'] = $this->parse->doparse($posts['message'], $posts['allowsmilies'], $posts['allowhtml'], $posts['allowbbcode'], $posts['allowimages']);
/**
         * Itratos Linkback Start
         */
        if ($aafili == 1) {
            if (strstr($posts['message'],"cgi.ebay.")) {
                $strarr explode("<a href=\"",$posts['message']);
                for ($i=0;$i<count($strarr);$i++) {
                    if (substr($strarr[$i],0,19) == "http://cgi.ebay.de/") {
                        $restlink substr($strarr[$i],19);
                        $affili "http://partners.webmasterplan.com/click.asp?ref=".Itratos_auktion_affilinetid."&site=1382&type=text&tnb=23&diurl=http://cgi.ebay.de/";
                        $strarr[$i] = $affili.$restlink;
                    }
                }
                $posts['message'] = implode("<a href=\"",$strarr);
            }
        }
        if ($aamazon == 1) {
            if (strstr($posts['message'],"amazon.de")) {
                $strarr explode("<a href=\"",$posts['message']);
                for ($i=0;$i<count($strarr);$i++) {
                    if (substr($strarr[$i],0,20) == "http://www.amazon.de") {
                        $strpos strpos($strarr[$i],"\"");
                        $first substr($strarr[$i],0,$strpos);
                        $ganz $first."&tag=".Itratos_auktion_trackingid;
                        $rest substr($strarr[$i],$strpos);
                        $strarr[$i] = $ganz.$rest;
                    }
                }
                $posts['message'] = implode("<a href=\"",$strarr);
            }
        }
        /**
         * Itratos Linkback Ende
         */
                
        $posts['posttopic'] = htmlconverter(textwrap($posts['posttopic']));
        if ($posts['iconid']) $posticon makeimgtag($posts['iconpath'], getlangvar($posts['icontitle'], $lang), 0);
        else $posticon '';
        if ($posts['posttime'] > $thread['lastvisit']) $newpost 1;
        else $newpost 0;
        
        $postdate formatdate($wbbuserdata['dateformat'], $posts['posttime'], 1);
        $posttime formatdate($wbbuserdata['timeformat'], $posts['posttime']);
        
        
        // show attachments
        $attachments '';
        $attachment_thumbnailCount 0;
        $attachmentbit '';
        $attachmentbit_img '';
        $attachmentbit_img_small '';
        $attachmentbit_img_thumbnails '';
        
        if (isset($this->attachmentArray[$posts['postid']]) && count($this->attachmentArray[$posts['postid']])) {
            unset($LANG_THREAD_ATTACHMENT_IMAGE_THUMBNAIL);
            unset($LANG_THREAD_ATTACHMENT_IMAGE_SMALL);
            unset($LANG_THREAD_ATTACHMENT_IMAGE);
            unset($LANG_THREAD_ATTACHMENT);
            
            foreach ($this->attachmentArray[$posts['postid']] as $attachment) {
                $attachment['attachmentextension'] = htmlconverter($attachment['attachmentextension']);
                $attachment['attachmentname'] = htmlconverter(textwrap($attachment['attachmentname']));
                
                // attachment is an image, display it directly
                if (checkpermissions('can_download_attachments') == && $wbbuserdata['showimages'] == && $wbbuserdata['can_download_attachments'] == && ($attachment['attachmentextension'] == 'gif' || $attachment['attachmentextension'] == 'jpg' || $attachment['attachmentextension'] == 'jpeg'  || $attachment['attachmentextension'] == 'png')) {
                    if ($attachment['thumbnailextension'] != '') {
                        $attachment_thumbnailCount++;
                        if ($attachment_thumbnailCount && ($attachment_thumbnailCount $thumbnailsperrow) == 0$thumbnailNewline true;
                        else $thumbnailNewline false;
                        if (!isset($LANG_THREAD_ATTACHMENT_IMAGE_THUMBNAIL)) $LANG_THREAD_ATTACHMENT_IMAGE_THUMBNAIL $lang->get("LANG_THREAD_ATTACHMENT_IMAGE_SMALL", array('$username' => $username));
                        else $LANG_THREAD_ATTACHMENT_IMAGE_THUMBNAIL $lang->get("LANG_THREAD_ATTACHMENTS_IMAGE_SMALL", array('$username' => $username));
                        
                        eval("\$attachmentbit_img_thumbnails .= \"".$tpl->get("thread_attachmentbit_show_thumbnail")."\";");
                    }
                    else {
                        $imgsize = @getimagesize("./attachments/attachment-$attachment[attachmentid].$attachment[attachmentextension]");
                        
                        if (($picmaxwidth != && $imgsize[0] > $picmaxwidth) || ($picmaxheight != && $imgsize[1] > $picmaxheight)) {
                            if ($picmaxwidth != 0$div1 $picmaxwidth $imgsize[0];
                            else $div1 1;
                            if ($picmaxheight != 0$div2 $picmaxheight $imgsize[1];
                            else $div2 1;
                            
                            if ($div1 $div2) {
                                $attachment['imgwidth'] = $picmaxwidth;
                                $attachment['imgheight'] = round($imgsize[1] * $div1);
                            }
                            else {
                                $attachment['imgheight'] = $picmaxheight;
                                $attachment['imgwidth'] = round($imgsize[0] * $div2);    
                            }
                            
                            if (!isset($LANG_THREAD_ATTACHMENT_IMAGE_SMALL)) $LANG_THREAD_ATTACHMENT_IMAGE_SMALL $lang->get("LANG_THREAD_ATTACHMENT_IMAGE_SMALL", array('$username' => $username));
                            else $LANG_THREAD_ATTACHMENT_IMAGE_SMALL $lang->get("LANG_THREAD_ATTACHMENTS_IMAGE_SMALL", array('$username' => $username));
                            
                            eval("\$attachmentbit_img_small .= \"".$tpl->get("thread_attachmentbit_show_small")."\";");
                        }
                        else {
                            if (!isset($LANG_THREAD_ATTACHMENT_IMAGE)) $LANG_THREAD_ATTACHMENT_IMAGE $lang->get("LANG_THREAD_ATTACHMENT_IMAGE", array('$username' => $username));
                            else $LANG_THREAD_ATTACHMENT_IMAGE $lang->get("LANG_THREAD_ATTACHMENTS_IMAGE", array('$username' => $username));
                            
                            eval("\$attachmentbit_img .= \"".$tpl->get("thread_attachmentbit_show")."\";");
                        }
                    }
                }
                else {
                    if (!file_exists($style['imagefolder']."/filetypes/".$attachment['attachmentextension'].".gif")) $extensionimage "unknown";
                    else $extensionimage $attachment['attachmentextension'];
                    if ($attachment['counter'] >= 1000$attachment['counter'] = number_format($attachment['counter'], 0""$lang->get("LANG_GLOBAL_THOUSANDS_SEP")); 
                    $attachment['attachmentsize'] = formatFilesize($attachment['attachmentsize']);
                    $LANG_THREAD_ATTACHMENT_INFO $lang->get("LANG_THREAD_ATTACHMENT_INFO", array('$attachmentsize' => $attachment['attachmentsize'], '$counter' => $attachment['counter']));
                    if (!isset($LANG_THREAD_ATTACHMENT)) $LANG_THREAD_ATTACHMENT $lang->get('LANG_THREAD_ATTACHMENT');
                    else  $LANG_THREAD_ATTACHMENT $lang->get('LANG_THREAD_ATTACHMENTS');
                    
                    eval("\$attachmentbit .= \"".$tpl->get("thread_attachmentbit")."\";");
                }                
            }
            eval("\$attachments = \"".$tpl->get("thread_attachments")."\";");
        }
        
        if ($posts['editorid']) {
            $editdate formatdate($wbbuserdata['dateformat'], $posts['edittime'], 1);
            $edittime formatdate($wbbuserdata['timeformat'], $posts['edittime']);
            $posts['editor'] = htmlconverter($posts['editor']);
            
            $LANG_THREAD_EDITOR $lang->get("LANG_THREAD_EDITOR", array('$editcount' => $posts['editcount'], '$editor' => $posts['editor'], '$editdate' => $editdate'$edittime' => $edittime));
        }
        
        if ($posts['userid']) {
            $posts['homepage'] = htmlconverter($posts['homepage']);
            $posts['email'] = getASCIICodeString($posts['email']);
            
            $rankimages formatRI($posts['rankimages']);
            if ($posts['title']) $posts['ranktitle'] = htmlconverter($posts['title']);
            else $posts['ranktitle'] = getlangvar($posts['ranktitle'], $lang);
            
            if ($userratings == && $showuserratinginthread == 1$userrating userrating($posts['ratingcount'], $posts['ratingpoints'], $posts['userid']);
            if ($showuserlevels == 1$userlevel userlevel($posts['userposts'], $posts['regdate']);
            
            if ($showonlineinthread == 1) {
                if (($posts['invisible'] == || $wbbuserdata['a_can_view_ghosts'] == 1) && $posts['lastactivity'] >= time() - $useronlinetimeout 60) {
                    $user_online 1;
                    $LANG_MEMBERS_USERONLINE $lang->get("LANG_MEMBERS_USERONLINE", array('$username' => $username));
                }
                else {
                    $user_online 0;
                    $LANG_MEMBERS_USERONLINE $lang->get("LANG_MEMBERS_USEROFFLINE", array('$username' => $username));
                }
            }
            
            if ($showregdateinthread == 1$posts['regdate'] = formatdate($wbbuserdata['dateformat'], $posts['regdate']);
            
            if ($showuserfieldsinthread == && is_array($this->userfieldcache) && count($this->userfieldcache)) {
                while (list($key$val) = each($this->userfieldcache)) {
                    $fieldcontent textwrap($posts["field".$val['profilefieldid']], 20);
                    if ($fieldcontent && $fieldcontent != "0000-00-00") {
                        if ($val['fieldtype'] == "multiselect"$fieldcontent str_replace("\n""; "$fieldcontent);
                        elseif ($val['fieldtype'] == "date") {
                            $row_datearray explode("-"$fieldcontent);
                            if ($row_datearray[0] == "0000"$fieldcontent $row_datearray[2].".".$row_datearray[1].".";
                            else $fieldcontent $row_datearray[2].".".$row_datearray[1].".".$row_datearray[0];
                        }
                        $fieldcontent htmlconverter($fieldcontent);
                        eval("\$userfields .= \"".$tpl->get("thread_userfields")."\";");
                    }
                }
            }

            /**
             * Itratos Auktionen Start
             */
            require("itratos_linkback.inc.php");
            /**
             * Itratos Auktionen Ende
             */

            if ($showgenderinthread == 0$posts['gender'] = 0;
            if ($posts['gender'] == 1$LANG_THREAD_MALE $lang->get("LANG_THREAD_MALE", array('$username' => $username));
            if ($posts['gender'] == 2$LANG_THREAD_FEMALE $lang->get("LANG_THREAD_FEMALE", array('$username' => $username));
            
            if ($posts['showemail'] == || $posts['usercanemail'] == 1$LANG_MEMBERS_SENDEMAIL $lang->get("LANG_MEMBERS_SENDEMAIL", array('$username' => $username));
            if ($posts['homepage']) $LANG_MEMBERS_HOMEPAGE $lang->get("LANG_MEMBERS_HOMEPAGE", array('$username' => $username));
            
            $LANG_MEMBERS_SEARCH $lang->get("LANG_MEMBERS_SEARCH", array('$username' => $username));
            $LANG_MEMBERS_BUDDY $lang->get("LANG_MEMBERS_BUDDY", array('$username' => $username));
            
            if ($posts['receivepm'] == && $wbbuserdata['can_use_pms'] == 1$LANG_MEMBERS_PM $lang->get("LANG_MEMBERS_PM", array('$username' => $username));
            
            if ($posts['icq']) $LANG_MEMBERS_ICQ $lang->get("LANG_MEMBERS_ICQ", array('$username' => $username));
            if ($posts['aim']) {
                $posts['aim'] = htmlconverter($posts['aim']);
                $aim $posts['aim'];
                $LANG_MEMBERS_AIM $lang->get("LANG_MEMBERS_AIM", array('$username' => $username'$aim' => $aim));
            }
            if ($posts['yim']) {
                $posts['yim'] = htmlconverter($posts['yim']);
                $yim $posts['yim'];
                $LANG_MEMBERS_YIM $lang->get("LANG_MEMBERS_YIM", array('$username' => $username'$yim' => $yim));
            }
            if ($posts['msn']) {
                $posts['msn'] = htmlconverter($posts['msn']);
                $LANG_MEMBERS_MSN $lang->get("LANG_MEMBERS_MSN", array('$username' => $username));
            }
            
            if ($posts['avatarid'] && $showavatar == && $wbbuserdata['showavatars'] == 1) {
                $avatarname "images/avatars/avatar-$posts[avatarid].".htmlconverter($posts['avatarextension']);
                $avatarwidth $posts['width'];
                $avatarheight $posts['height'];
                if ($posts['avatarextension'] == "swf" && $allowflashavatar == 1) eval("\$useravatar = \"".$tpl->get("avatar_flash")."\";");
                elseif ($posts['avatarextension'] != "swf") eval("\$useravatar = \"".$tpl->get("avatar_image")."\";");
            }
            
            if ($authormarking == && $posts['useronlinemarking'] != ''$posts['username'] = sprintf($posts['useronlinemarking'], $posts['username']);
            if (isset($_GET['hilightuser']) && $_GET['hilightuser'] == $posts['userid']) $posts['username'] = "<span class=\"highlight\">".$posts['username']."</span>";
            
            if ($showthreadstarter == && $thread['starterid'] == $posts['userid'] && $thread['starttime'] != $posts['posttime']) {
                $threadstarter 1;
                $LANG_THREAD_THREADSTARTER_ALT $lang->get("LANG_THREAD_THREADSTARTER_ALT", array('$starter' => htmlconverter($thread['starter'])));
            }
            else $threadstarter 0;
            
            if ($posts['showsignature'] == && !$posts['disablesignature'] && $wbbuserdata['showsignatures'] == && $posts['signature']) {
                $posts['signature'] = $this->parse->doparse($posts['signature'], $posts['allowsigsmilies'], $posts['allowsightml'], $posts['allowsigbbcode'], $posts['allowsigimages']);
                eval("\$signature = \"".$tpl->get("thread_signature")."\";");
            }
            
            if ($showuserpostsinthread == && $posts['userposts'] >= 1000$posts['userposts'] = number_format($posts['userposts'], 0""$lang->get("LANG_GLOBAL_THOUSANDS_SEP")); 
        }        
/* Bewertungs-System - Anfang - */
$userposts $posts['threadneg'] + $posts['threadpos'] + $posts['threadneu'];
$LANG_THREAD_RATING2 $lang->get("LANG_THREAD_RATING2", array('$userposts' => $userposts));
$LANG_THREAD_RATINGPOS $lang->get("LANG_THREAD_RATINGPOS", array('$threadpos' => $posts['threadpos']));
$LANG_THREAD_RATINGNEG $lang->get("LANG_THREAD_RATINGNEG", array('$threadneg' => $posts['threadneg']));
$LANG_THREAD_RATINGNEU $lang->get("LANG_THREAD_RATINGNEU", array('$threadneu' => $posts['threadneu']));

eval("\$postbitrate = \"".$tpl->get("thread_postbitrate")."\";");
                
if ($showuserratings == && $posts['userid'] != $wbbuserdata['userid']) $allow_rating 1;
elseif ((($showuserratings == || $showuserratings == 1) && $board['allowuserrating'] == 1) && ($posts['userid'] && $wbbuserdata['userid'])) $allow_rating 1;
else $allow_rating 0;
/* Bewertungs-System - Ende - */

    $date date('m-d');
    $b_d $posts['birthday'];
    $b_d explode('-',$b_d);
    $b_d $b_d[1].'-'.$b_d[2];
    if ($date == $b_d) { $birthday 1; }
    else { $birthday 2; }

        eval("\$postbit = \"".$tpl->get("thread_postbit")."\";");
        return $postbit;
    }
    
    
    /**
    * jump to last post
    *
    * @return void
    */
    function lastpost() {
        global $visible$SID_ARG_2ND_UN$db$n$url2board;
        $result $db->query_first("SELECT postid FROM bb".$n."_posts WHERE threadid = '".$this->threadid."' $visible ORDER BY posttime DESC"1);
        header("Location: thread.php?postid=".$result['postid'].$SID_ARG_2ND_UN."#post$result[postid]");
        exit;    
    }
    
    /**
    * jump to first new post
    *
    * @param integer lastvisit
    *
    * @return void
    */
    function firstnew($lastvisit) {
        global $visible$db$n$SID_ARG_2ND_UN$threadid$url2board;
        $result $db->query_first("SELECT postid FROM bb".$n."_posts WHERE threadid='".$this->threadid."' AND posttime>'".$lastvisit."' $visible ORDER BY posttime ASC"1);
        if ($result['postid']) header("Location: thread.php?postid=".$result['postid'].$SID_ARG_2ND_UN."#post$result[postid]");
        else header("Location: thread.php?goto=lastpost&threadid=".$threadid.$SID_ARG_2ND_UN);
        exit;
    }
    
    
    /**
    * jump to next newest thread
    *
    * @return void
    */
    function nextnewest() {
        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 ASC"1);
        if (!$result['threadid']) error($lang->get("LANG_THREAD_ERROR_NONEXTNEWEST"));
        $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."'");
    }
    
    /**
    * jump to next oldest thread
    *
    * @return void
    */
    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;
        $thread $db->query_first("SELECT * FROM bb".$n."_threads WHERE 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."'");    
    }
    
    /**
    * create links to further pages
    *
    * @return void
    */
    function makePagelink() {
        global $SID_ARG_2ND$threadview$hilight$hilightuser$showpagelinks;
        $this->pagelink makepagelink("thread.php?threadid=".$this->threadid."&amp;threadview=$threadview&amp;hilight=".urlencode($hilight)."&amp;hilightuser=$hilightuser".$SID_ARG_2ND$this->page$this->pages$showpagelinks 1);
    }
    
    
    /**
    * 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 ($this->readAttachments) {
            $result $db->unbuffered_query("SELECT postid, attachmentid, attachmentname, attachmentextension, attachmentsize, counter, thumbnailextension FROM bb".$n."_attachments WHERE postid IN (0".$this->postids.") ORDER BY uploadtime");
            while ($row $db->fetch_array($result)) {
                $this->attachmentArray[$row['postid']][$row['attachmentid']] = $row;
            }
        }
        
        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.birthday,
        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,u.threadpos, u.threadneg, u.threadneu,
        r.ranktitle, r.rankimages,
        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."_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;
    }
}














/** FlatThread Class **/
class FlatThread extends Thread {
    
    /**
    * constructor
    *
    * @param integer threadid
    */
    function FlatThread($threadid) {
        $this->threadid $threadid;
    }
    
    /**
    * get and stores the pagenumber of a certain message
    *
    * @param integer postid
    *
    * @return void
    */
    function gotoPost($postid) {
        global $db$n$visible$postorder$postsperpage$_GET;
        if ($postorder == 0$result $db->query_first("SELECT COUNT(*) AS posts FROM bb".$n."_posts WHERE threadid='".$this->threadid."' AND postid<='$postid' $visible");
        else $result $db->query_first("SELECT COUNT(*) AS posts FROM bb".$n."_posts WHERE threadid='$threadid' AND postid>='$postid' $visible");
        $_GET['page'] = ceil($result['posts'] / $postsperpage);
    }
    
    
    /**
    * parse messages and returns complete postbit
    *
    * @return string postbit
    */
    function start() {
        global $postorder$db;
        $this->getPostIds();    
        
        $this->orderBy "ORDER BY p.posttime ".(($postorder) ? ("DESC") : ("ASC"));
        
        $count 0;
        $postbit '';
        $result $this->readPosts();
        while ($row $db->fetch_array($result)) $postbit .= $this->makePostBit($row$count++);
        
        return $postbit;    
    }
    
    
    /**
    * get and stores the postids of the current page
    *
    * @return void
    */
    function getPostIds() {
        global $visible$db$n$_GET$postsperpage$postorder$thread;
        $postcount $thread['replycount'] + 1;
        
        if (isset($_GET['page'])) {
            $this->page intval($_GET['page']);
            if ($this->page 1$this->page 1;
        }
        else $this->page 1;
        
        $this->pages ceil($postcount $postsperpage);
        if ($this->pages 1$this->makePagelink();
        
        $result $db->unbuffered_query("SELECT postid, attachments FROM bb".$n."_posts WHERE threadid = '".$this->threadid."' $visible ORDER BY posttime ".(($postorder) ? ("DESC") : ("ASC")), 0$postsperpage$postsperpage * ($this->page 1));
        while ($row $db->fetch_array($result)) {
            $this->postids .= ",".$row['postid'];
            if ($row['attachments']) $this->readAttachments true;
        }
    }
}












/** ThreadedThread Class **/
class ThreadedThread extends Thread {
    
    /**
    * @var integer offset
    */
    var $offset 0;

    /**
    * @var integer offset2
    */
    var $offset2 0;

    /**
    * @var array cache
    */
    var $cache = array();

    /**
    * @var array list
    */
    var $list = array();

    /**
    * @var integer max
    */
    var $max = -1;

    /**
    * @var integer total
    */
    var $total 0;

    /**
    * @var integer cout
    */
    var $count 0;

    /**
    * @var string postbitlist
    */
    var $postbitlist '';
    
    
    /**
    * constructor
    *
    * @param integer threadid
    */
    function ThreadedThread($threadid) {
        $this->threadid $threadid;
    }    
    
    
    /**
    * get and stores the pagenumber of a certain message
    *
    * @param integer postid
    *
    * @return void
    */
    function gotoPost($postid) {
        global $_GET$postsperpage$db$n$visible;    
        
        $result $db->query("SELECT postid, parentpostid, attachments FROM bb".$n."_posts WHERE threadid='".$this->threadid."' $visible ORDER BY posttime ASC");
        $this->total $db->num_rows($result);
        while ($row $db->fetch_array($result)) {
            $this->cache[$row['parentpostid']][$row['postid']] = 1;
            if ($row['attachments']) $this->readAttachments true;
        }
        
        $this->countPosts($postid);
        $_GET['page'] = ceil($this->count $postsperpage);
    }
    
    
    /**
    * get and stores the number of a certain message in threaded view
    * 
    * @param integer postid
    * @param integer count
    * @param integer parentid
    *
    * @return void
    */
    function countPosts($finalpostid$count 0$parentid 0) {
        if (!isset($this->cache[$parentid])) return $count;
        reset($this->cache[$parentid]);
        
        while (list($postid, ) = each($this->cache[$parentid])) {
            $count++;
            if ($postid == $finalpostid) {
                $this->count $count;
                break;
            }
            $count $this->countPosts($finalpostid$count$postid);     
        }
        
        return $count;    
    }
    
    /**
    * parse messages and returns complete postbit
    *
    * @return string postbit
    */
    function start() {
        global $db$n$postsperpage$_GET$visible;
        
        if (isset($_GET['page'])) {
            $this->page intval($_GET['page']);
            if ($this->page == 0$this->page 1;
        }
        else $this->page 1;
        
        $this->offset $postsperpage * ($this->page 1);
        $this->offset2 $this->offset $postsperpage;
        
        if (count($this->cache) == 0) {
            $result $db->query("SELECT postid, parentpostid, attachments FROM bb".$n."_posts WHERE threadid='".$this->threadid."' $visible ORDER BY posttime ASC");
            $this->total $db->num_rows($result);
            while ($row $db->fetch_array($result)) {
                $this->cache[$row['parentpostid']][$row['postid']] = 1;
                if ($row['attachments']) $this->readAttachments true;
            }
        }
        
        $this->pages ceil($this->total $postsperpage);
        if ($this->pages 1$this->makePagelink();
        
        reset($this->cache);
        $this->generate();
        if ($this->max 0$this->sync();
        $result $this->readPosts();
        
        while ($posts $db->fetch_array($result)) {
            $temp $this->list[$posts['postid']];
            $this->list[$posts['postid']] = $posts;
            $this->list[$posts['postid']]['depth'] = $temp;    
        }
        
        $count 0;
        $postbit '';
        reset($this->list);
        while (list($postid, ) = each($this->list)) {
            $postbit .= $this->makePostBit($this->list[$postid], $count++, $this->list[$postid]['depth'] * 15);
            $this->postbitlist .= $this->makePostBitList($this->list[$postid], $this->list[$postid]['depth'] * 15);
        }
        return $postbit;
    }
    
    
    /**
    * calculates the depth of the threaded view
    *
    * @param integer parentid
    * @param integer count
    * @param integer depth
    *
    * @return integer count
    */
    function generate($parentid 0$count 0$depth 0) {
        if (!isset($this->cache[$parentid])) return $count;
        reset($this->cache[$parentid]);
        
        while (list($postid, ) = each($this->cache[$parentid])) {
            if ($count >= $this->offset && $count $this->offset2) {
                if ($this->max == -1$this->max $depth;
                if ($depth $this->max$this->max $depth;
                
                $this->list[$postid] = $depth;
                $this->postids .= ",".$postid;    
            }    
            $count++;
            $count $this->generate($postid$count$depth 1);     
        }
        
        return $count;
    }
    
    
    /**
    * generates a postlist
    * 
    * @param array posts
    * @param integer imgwidth
    *
    * @return string postlist
    */
    function makePostBitList($posts$imgwidth 0) {
        global $tpl$wbbuserdata$lang$SID_ARG_1ST$SID_ARG_2ND$SID_ARG_2ND_UN$style$thread;
        
        $postdate formatdate($wbbuserdata['dateformat'], $posts['posttime']);
        $posttime formatdate($wbbuserdata['timeformat'], $posts['posttime']);
        
        if (!$posts['posttopic']) $posts['posttopic'] = "RE: ".$thread['topic']; 
        $posts['posttopic'] = htmlconverter(textwrap($posts['posttopic']));
        $posts['username'] = htmlconverter(textwrap($posts['username'], 30));
        
        if ($posts['posttime'] > $thread['lastvisit']) $newpost 1;
        else $newpost 0;
        
        
        eval("\$postbit = \"".$tpl->get("thread_postbitlist")."\";");
        return $postbit;
    }
    
    /**
    * calculates the depth of the threaded view
    *
    * @return void
    */
    function sync() {
        reset($this->list);
        while (list($postid$depth) = each($this->list)) $this->list[$postid] = $depth $this->max;
    }    
}













if (checkmodpermissions()) $visible '';
else $visible "AND visible=1";

if (isset($_REQUEST['threadview'])) $threadview intval($_REQUEST['threadview']);
else $threadview $wbbuserdata['threadview'];

if (isset($_REQUEST['hilight'])) $hilight urldecode($_REQUEST['hilight']);
else $hilight '';

if (isset($_REQUEST['hilightuser'])) $hilightuser intval($_REQUEST['hilightuser']);
else $hilightuser 0;

if (!isset($_REQUEST['goto'])) $_REQUEST['goto'] = '';

if ($threadview == 1$t = &new ThreadedThread($threadid);
else $t = &new FlatThread($threadid);

/* goto actions 1 */
if ($_REQUEST['goto'] == "lastpost"$t->lastpost();
if ($_REQUEST['goto'] == "nextnewest"$t->nextnewest();
if ($_REQUEST['goto'] == "nextoldest"$t->nextoldest();

/* threadvisit */
if ($board['lastvisit'] > $thread['lastvisit']) $thread['lastvisit'] = $board['lastvisit'];
if ($wbbuserdata['lastvisit'] > $thread['lastvisit']) $thread['lastvisit'] = $wbbuserdata['lastvisit'];

/* goto actions 2 */
if ($_REQUEST['goto'] == "firstnew"$t->firstnew($thread['lastvisit']);
if ($_REQUEST['goto'] == "firstnew_thread"$t->firstnew($wbbuserdata['lastvisit']);


if ($wbbuserdata['umaxposts']) $postsperpage $wbbuserdata['umaxposts'];
elseif ($board['postsperpage']) $postsperpage $board['postsperpage'];
else $postsperpage $default_postsperpage;
$postorder $board['postorder'];

if (isset($postid)) $t->gotoPost($postid);

$db->unbuffered_query("UPDATE bb".$n."_threads SET views=views+1 WHERE threadid='$threadid'"1);
if ($wbbuserdata['userid'] && $thread['lastposttime'] > $thread['lastvisit']) $db->unbuffered_query("REPLACE INTO bb".$n."_threadvisit (threadid,userid,lastvisit) VALUES ('".$threadid."','".$wbbuserdata['userid']."','".time()."')"1);


$boardnavcache = array();
if ($showboardjump == 1$boardjump makeboardjump($boardid);
$navbar getNavbar($board['parentlist']);
eval("\$navbar .= \"".$tpl->get("navbar_board")."\";");

$postbit $t->start();
$thread_poll '';
if ($thread['pollid']) {
    if (checkmodpermissions("m_can_edit_poll")) eval("\$mod_poll_edit = \"".$tpl->get("thread_poll_edit")."\";");
    unset($votecheck);
    
    $poll $db->query_first("SELECT * FROM bb".$n."_polls WHERE pollid='$thread[pollid]'");
    $poll['question'] = htmlconverter($poll['question']);
    
    if ($poll['timeout'] == 0$timeout time() + 1;
    else $timeout $poll['starttime'] + $poll['timeout'] * 86400;
    if ($_REQUEST['preresult'] != && checkpermissions("can_vote_poll") == && $timeout >= time()) {
        if ($wbbuserdata['userid']) $votecheck $db->query_first("SELECT id AS pollid FROM bb".$n."_votes WHERE id='$thread[pollid]' AND votemode=1 AND userid='$wbbuserdata[userid]'");
        else $votecheck $db->query_first("SELECT id AS pollid FROM bb".$n."_votes WHERE id='$thread[pollid]' AND votemode=1 AND ipaddress='$REMOTE_ADDR'");
    } 
    
    // already voted; show result
    if ($_REQUEST['preresult'] == || $votecheck['pollid'] || !checkpermissions("can_vote_poll") || $timeout time()) {
        $votes 0;
        unset($polloption);
        $totalvotes 0;
        $polloptions = array();
        $result $db->unbuffered_query("SELECT * FROM bb".$n."_polloptions WHERE pollid='$thread[pollid]' ORDER BY votes DESC");
        while ($row $db->fetch_array($result)) {
            $totalvotes += $row['votes'];
            $polloptions[] = $row;
        }
        
        $i 1;
        if (count($polloptions)) {
            while (list($key$row) = each($polloptions)) {
                $row['polloption'] = htmlconverter(textwrap($row['polloption']));
                if ($totalvotes) {
                    $percent_float $row['votes'] * 100 $totalvotes;
                    $percent number_format($percent_float2);
                    $percent_int floor($percent_float) * 3;
                    $percent_int += 1;    
                }
                else $percent $percent_int 0; 
                eval("\$thread_poll_resultbit .= \"".$tpl->get("thread_poll_resultbit")."\";");
                if ($i == 5$i 0;
                $i++;
            }
        }
        
        $lang->items['LANG_THREAD_POLL_VOTES'] = $lang->get("LANG_THREAD_POLL_VOTES", array('$totalvotes' => $totalvotes));
        eval("\$thread_poll = \"".$tpl->get("thread_poll_result")."\";");
    }
    else {
        if ($poll['choicecount'] > 1$inputtype "checkbox";
        else $inputtype "radio";
        
        $result $db->unbuffered_query("SELECT * FROM bb".$n."_polloptions WHERE pollid='$thread[pollid]' ORDER BY showorder ASC");
        while ($row $db->fetch_array($result)) {
            $row['polloption'] = htmlconverter(textwrap($row['polloption']));
            eval("\$thread_pollbit .= \"".$tpl->get("thread_pollbit")."\";");
        }
        
        eval("\$thread_poll = \"".$tpl->get("thread_poll")."\";");
    }
}

if ($board['allowratings'] == 1) {
    $colors createGradient($style['gradientleft'], $style['gradientmiddle'], $style['gradientright']);
    if ($thread['voted'] && $thread['voted'] >= $showvotes$threadrating threadrating($thread['votepoints'], $thread['voted']);
}
else $threadrating '';

if ($board['closed'] == 0) eval("\$newthread = \"".$tpl->get("board_newthread")."\";");
if ($thread['closed'] != 0) eval("\$addreply = \"".$tpl->get("thread_closed")."\";");
elseif ($board['closed'] == 0) eval("\$addreply = \"".$tpl->get("thread_addreply")."\";");

$thread['topic'] = htmlconverter(textwrap($thread['topic']));

if ($board['emailnotify'] == && $board['countemails'] != 0$db->unbuffered_query("UPDATE bb".$n."_subscribeboards SET countemails=0 WHERE userid = '".$wbbuserdata['userid']."' AND boardid = '".$boardid."'"1);
if ($thread['emailnotify'] == && $thread['countemails'] != 0$db->unbuffered_query("UPDATE bb".$n."_subscribethreads SET countemails=0 WHERE userid = '".$wbbuserdata['userid']."' AND threadid = '".$threadid."'"1);

$hilight htmlconverter($hilight);
require "quickreply.php";
/** Who-read-this-thread (c) Mr Hatch**/
$readcount=$db->query_first("SELECT COUNT(*) FROM bb".$n."_threads_users WHERE threadid='$threadid' AND userid='$wbbuserdata[userid]'");
if($readcount[0]==0){
    $db->query("INSERT INTO bb".$n."_threads_users (threadid,userid,readtime,timesread) VALUES ('$threadid','$wbbuserdata[userid]','".time()."','1')");
}
else{
    $db->query("UPDATE bb".$n."_threads_users SET readtime='".time()."',timesread=timesread+1 WHERE threadid='$threadid' AND userid='$wbbuserdata[userid]'");
}
/** Who-read-this-thread (c) Mr Hatch**/
eval("\$tpl->output(\"".$tpl->get("thread")."\");");
?>


Ich bitte um Hilfe!

LG, Mine
22.01.08 12:16 mine ist offline E-Mail WWW Finden Als Freund hinzufügen Füge mine in deine Kontaktliste ein YIM-Name von mine: lea_sophies_mama MSN Passport-Profil von mine anzeigen
janni23
Mitglied


Dabei seit: 28.10.05
Beiträge: 4

Antworten Zitieren Editieren Melden       UP

wäre es möglich eine Guthaben Erweiterung für diesen Addon rauszugeben da meine user mit hoher Wahrscheinlichkeit ohne Vergütung nicht auf die Banner klicken
22.01.08 15:23 janni23 ist offline E-Mail Finden Als Freund hinzufügen
AmmuNation
Mitglied


Dabei seit: 22.09.06
Beiträge: 1
Forenversion: 2.3

Antworten Zitieren Editieren Melden       UP

Hat noch jemand zufällig die Anleitung von dem Hack?
Das Board ist ja leider off..

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von AmmuNation: 16.06.08 19:16.

16.06.08 19:15 AmmuNation ist offline E-Mail Finden Als Freund hinzufügen
HaKaN1903 HaKaN1903 ist männlich
Mitglied


Dabei seit: 10.02.05
Beiträge: 160

Antworten Zitieren Editieren Melden       UP

Wie soll das ohne Anleitung gehen ? Augenzwinkern
26.06.08 10:37 HaKaN1903 ist offline E-Mail WWW Finden Als Freund hinzufügen
Marvel
Mitglied


Dabei seit: 16.01.04
Beiträge: 303

Antworten Zitieren Editieren Melden       UP

Demo bitte?
06.01.09 04:13 Marvel ist offline E-Mail Finden Als Freund hinzufügen
Agi Agi ist männlich
TEAM - PHP Freak

images/avatars/avatar-5240.gif

Dabei seit: 22.11.04
Beiträge: 2.628
Fähigkeiten: WBB3 Profi
Forenversion: 3.1

Antworten Zitieren Editieren Melden       UP

Vielleicht hilft dir das hier weiter: http://forum.itratos.de/showthread.php?t=17115

Aber die Demos scheinen auch dort nicht mehr zu funktionieren ...

__________________

06.01.09 15:04 Agi ist offline Finden Als Freund hinzufügen
jcc
Mitglied


Dabei seit: 31.03.05
Beiträge: 4

Antworten Zitieren Editieren Melden       UP

Hab den Hack am laufen, kann mich dumpf daran erinnern das ein Fehler auftritt wenn man eine Funktion abschalten will.

Support gibt es seit gut einem Jahr nirgends böse
09.02.09 09:04 jcc 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.3.x » [WBB 2.3.x] Hacks und Addons » * itratos Linkback und Inline Ads 1.0.0