mod_rewrite-Pack für 2.1.x

Pikay
jetzt funzt alles, lag an der htacesgroßes Grinsen

habe da aber noch eine frage.
ist das normal dass im wiw der google/msn-bot sich in "sonstiges" aufhält? müsste er nicht in die einzelnen threads kommen?

besten dank im voraus

gruss

christoph
Ste
da steht sonstiges, weil sich der bot auf den html seiten aufhält und nicht mehr auf den php. Das wbb kennt es nicht schreibt also darum sontiges hin
Pikay
vielen dank, das erklärt einigessmile
Wbb-Service Team
hab ein problem mit der htaccess... hab mir hier eine aus dem thread gekrallt, und dann halt mit meiner url (/html/wbb2/) abgeändert, nur dann bekomme ich immer einen serverfehler, und zwar auf JEDER seite....
OF-Shadow
Error 500? Hast Du Confixx installiert?
Wbb-Service Team
ne weißte... ich hab garnix drauf.... natürlich hab ich confixx installiert... hab jetzt übrigens auch die bestätigung von meinem hoster das mod_rewrite aktiviert ist
OF-Shadow
Es muss nicht unbedingt Confixx sein.
Es liegt an Confixx, weil ich das Problem auch hatte smile

Ich benutz den Mist aber nicht mehr, aber damals klappte es, wenn man im Confixx bei httpd-Spezial das eingetragen hat:
code:
1:
2:
3:
4:
<Directory "/srv/www/htdocs/##user##/html">
AllowOverride All
</Directory>


Wobei ##user## automatisch von Confixx ersetzt wird! Den Rset musst Du selbst herausfinden, weil Du auf meine Frage ja so freundlich geantwortet hast. Augen rollen

Liebe Grüße
Wbb-Service Team
genau das gleiche steht bei mir bzw. bei meinem hoster.... (nur ##user## wurde schon vorn vorherein ersetzt durch wbbXX)

jetzt sei doch nicht gleich beleidigt Augen rollen
OF-Shadow
Probier mal unter httpd-Spezial mit dem:
code:
1:
2:
3:
4:
5:
<Directory "/srv/www/htdocs/##user##/html">
 Options +FollowSymLinks +SymLinksIfOwnerMatch +Multiviews
AllowOverride All
</Directory>


Das sollte klappen. Freude Achte aber auf das Verzeichnis bei Dircectory, das kann bei Dir schon leicht abweichen. Damit meine ich -->

<Directory "/srv/www/htdocs/##user##/html">

Bin nicht beleidigt und versuche Dir zu helfen *g* großes Grinsen
Wbb-Service Team
und was muss dann in einer passenden htaccess stehen?

na dann: dankeschön großes Grinsen
OF-Shadow
code:
1:
2:
RewriteEngine on
RewriteRule ^(.*)\.(htm|html)$ mod_rewrite.php?file=$1


Pack die .htaccess in den Ordner, wo sie gebraucht wird, z.B wbb2, das sollt funzen!

Wenn nicht, probier die .htaccess ins Hauptverzeichnis Deines Webspace zu packen und dann mit "Rewritebase" zu arbeiten! "wbb2" ersetzt Du durch Deinen Boardordner.

code:
1:
2:
3:
RewriteEngine on
RewriteBase /wbb2
RewriteRule ^(.*)\.(htm|html)$ mod_rewrite.php?file=$1


Viel Glück. Falls es nicht klappt kannst Du mich per MSN oder ICQ Messenger gern mal anschreiben :-) Ich bin nicht jeden Tag hier, wie man sieht....
Wbb-Service Team
waaaaaaahhhh.... :stinkt :stinkt :stinkt :stinkt :stinkt :stinkt :stinkt :stinkt :stinkt :stinkt


ich bin ja so blöd.... hab deine 2. htaccess ins boardverzeichnis gepackt, und mich gewundert warum ich nen serverfehler bekomm....

:motz :motz :motz
Reddisch
Mal ne ganz doofe Frage. Sieht das Board nach dem einhacken von ModRewrite anders aus, oder wird einfach nur aus "php" -> "htm" ?

Weil wenn das danach für Gäste kacke aussieht is es ja extrem nachteilhaft...
gdo
Hallo

Ich hätte gerne auch so ein hack womit ich PHP in html ausgeben kann nur ich denn Hack nicht runterladen könnte mir einer so ein Hack per Email schicken webmaster@guckst-du-online.de

Danke im Vorraus
gdo
Ich habe die Version 2.3.3 und ich habe es schon Probiert hin und her aber es hat ein fach nicht geklappt kann mir einer den Richtigen Code geben: BITTE

Ich habe mal den Inhalt von class_tpl_file.php eingefügt

Zitat:
<?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: 2004-10-20 13:24:57 +0200 (Wed, 20 Oct 2004) $
// * $Author: Burntime $
// * $Rev: 1453 $
// ***************************************************************************
*********//


class tpl {

var $templates = array();
var $templatepackid = 0;
var $path = ".";

/* constuctor */
function tpl($templatepackid = 0, $path = ".") {
$this->templatepackid = $templatepackid;
$this->path = $path;
}

/* get template */
function get($templatename, $isacp = 0) {
// board template
if ($isacp == 0) {
if (!isset($this->templates[$templatename])) {

// get templatepackid
if ($this->templatepackid != 0) {
global $wbbuserdata;
if (!is_array($wbbuserdata['templatestructure'])) {
$wbbuserdata['templatestructure'] = unserialize($wbbuserdata['templatestructure']);
}
$templatepackid = $wbbuserdata['templatestructure'][$templatename];
}
else $templatepackid = 0;

// include template
if (file_exists($this->path."/cache/templates/".$templatepackid."_".$templaten
ame.".php")) {
include($this->path."/cache/templates/".$templatepackid."_".$templaten
ame.".php");
}
else $this->templates[$templatename] = "template &quot;".$templatename."&quot; doesnt exist";
}

return $this->templates[$templatename];
}

// acp template
else {
if (!isset($this->templates['acp_'.$templatename])) {
if (file_exists($this->path."/cache/templates/acp/".$templatename.".php")) {
include($this->path."/cache/templates/acp/".$templatename.".php");
}
else $this->templates['acp_'.$templatename] = "template &quot;".$templatename."&quot; doesnt exist";
}

return $this->templates['acp_'.$templatename];
}
}

/* print template */
function output($template, $isacp = 0) {
headers::send($isacp);
print($template);
}
}
?>



Und hier die thread.php

Zitat:
<?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: 2005-06-16 15:16:14 +0200 (Thu, 16 Jun 2005) $
// * $Author: Burntime $
// * $Rev: 1621 $
// ***************************************************************************
*********//


$filename = 'thread.php';

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

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






/** 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, $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;
if ($this->userfieldcache) reset($this->userfieldcache);
$userrating = '';
$signature = '';
$lastedit = '';
$user_online = '';
$userfields = '';
$useravatar = '';
$rankimages = '';
$setvisible = '';
$userlevel = '';
$posts['username'] = htmlconverter($posts['username']);
$username = $posts['username'];

/** mod / admin option -> set visible post **/
if ($posts['visible'] == 0 && $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']);

$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') == 1 && $wbbuserdata['showimages'] == 1 && $wbbuserdata['can_download_attachments'] == 1 && ($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].$attachme
nt[attachmentextension]");

if (($picmaxwidth != 0 && $imgsize[0] > $picmaxwidth) || ($picmaxheight != 0 && $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['attachmentex
tension'].".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 == 1 && $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'] == 0 || $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 == 1 && 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")."\";");
}
}
}

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'] == 1 || $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'] == 1 && $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 == 1 && $wbbuserdata['showavatars'] == 1) {
$avatarname = "images/avatars/avatar-$posts[avatarid].".htmlconverter($posts['avatarexten
sion']);
$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 == 1 && $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 == 1 && $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'] == 1 && !$posts['disablesignature'] && $wbbuserdata['showsignatures'] == 1 && $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 == 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;
}


/**
* 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=$threa
dview&amp;hilight=".urlencode($hilight)."&amp;hilightuser=$hilightuser".$SI
D_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($docensor, 75, $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.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,
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 == 0) $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'] != 1 && checkpermissions("can_vote_poll") == 1 && $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'] == 1 || $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_float, 2);
$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'] == 1 && $board['countemails'] != 0) $db->unbuffered_query("UPDATE bb".$n."_subscribeboards SET countemails=0 WHERE userid = '".$wbbuserdata['userid']."' AND boardid = '".$boardid."'", 1);
if ($thread['emailnotify'] == 1 && $thread['countemails'] != 0) $db->unbuffered_query("UPDATE bb".$n."_subscribethreads SET countemails=0 WHERE userid = '".$wbbuserdata['userid']."' AND threadid = '".$threadid."'", 1);

$hilight = htmlconverter($hilight);
eval("\$tpl->output(\"".$tpl->get("thread")."\");");
?>
Sould
Kann man den Hack nichts fürs 2.3.X umschreiben, ich würde ihn auch dringend gebrauchen... wäre echt super von euch !
Radiation
Der Hack wird für das 2.3 nicht benötigt, hierfür gibt es die Archivfunktion Augen rollen
Sould
Mein Archiv habe ich Online, möchte aber trotzdem die sessionID für die Gäste weg haben....
TheMastaKilla
Zitat:
Original von Sould
Mein Archiv habe ich Online, möchte aber trotzdem die sessionID für die Gäste weg haben....


Einfach aufs 2.3.3 updaten und weg sind sie Augenzwinkern
Zum Thema Archiv. Das Archiv bringt so gut wie gar nichts wenn man keinen gescheiten PR hat bei Google.

Hier nen kleines Tutorial für das 2.3.x http://www.kostenlose-pc-hilfe.de/thread,threadid-757.html
TheMastaKilla
Ich habe durch überlegen eine alternative entdeckt Augenzwinkern

Beispiel :

code:
1:
<a href="index.html<if($wbbuserdata['userid'])><then>{$SID_ARG_1ST}</then></if>">Start</a>


So wird auf jedenfall nur Usern die Session ID's mitgegeben smile