[2.3] Ähnliche Themen

Gucky

[inaktiv]
Topic ist ~~ Sabbel-Thread ~~ ;)

Habs mit dem neuen Code getauscht und nu auch keinen Fehler mehr :)

Dangeschöööön :yo
 

Gucky

[inaktiv]
Jipp das behebt den Fehler :)

Seltsam ist nur das ich ein ' auch is erste Testtopic hier reingemacht habe :nachdenk:
 

rellek

relativ sensationell
Teammitglied
behebt gleich noch nen paar mehr bugs.

Code:
/* Ähnlich Themen */
function GetAccessableForums() {
	global $db, $n, $wbbuserdata, $boardcache;
	
	if (!isset($boardcache) || !is_array($boardcache)) $boardcache = array();
	$result = $db->query("SELECT boardid,boardorder,parentid,parentlist FROM bb".$n."_boards ORDER BY parentid ASC, boardorder ASC");
	while ($row = $db->fetch_array($result)) {
		$boardcache[$row['parentid']][$row['boardorder']][$row['boardid']] = $row;
	}

	$boardpermissions = getPermissions();
	$boardids = '';
	foreach ($boardcache as $key => $val) {
		foreach ($val as $key2 => $val2) {
			foreach ($val2 as $row) if ((!isset($boardpermissions[$row['boardid']]['can_view_board']) || $boardpermissions[$row['boardid']]['can_view_board'] != 0) && (!isset($boardpermissions[$row['boardid']]['can_enter_board']) || $boardpermissions[$row['boardid']]['can_enter_board'] != 0) && (!isset($boardpermissions[$row['boardid']]['can_read_thread']) || $boardpermissions[$row['boardid']]['can_read_thread'] != 0)) $boardids .= ",".$row['boardid'];
		}	
	}
	return $boardids;
}

/* Unset Used Vars To Avoid Hacking Attempts */
unset($similar_thread_bit);
unset($like_string);

$ttopic = str_replace("."," ",$threadtopic);
$ttopic = str_replace("!"," ",$ttopic);
$ttopic = str_replace("?"," ",$ttopic);
$ttopic = str_replace("/"," ",$ttopic);
$ttopic = str_replace("§"," ",$ttopic);
$ttopic = str_replace("$"," ",$ttopic);
$ttopic = str_replace("%"," ",$ttopic);
$ttopic = str_replace("&"," ",$ttopic);
$ttopic = str_replace("("," ",$ttopic);
$ttopic = str_replace(")"," ",$ttopic);
$ttopic = str_replace("="," ",$ttopic);
$ttopic = str_replace("\\\"," ",$ttopic);
$ttopic = str_replace("?"," ",$ttopic);
$ttopic = str_replace("-"," ",$ttopic);
$ttopic = str_replace("*"," ",$ttopic);
$ttopic = str_replace("+"," ",$ttopic);
$ttopic = str_replace("#"," ",$ttopic);
$ttopic = str_replace("_"," ",$ttopic);
$ttopic = str_replace(","," ",$ttopic);
$ttopic = str_replace(":"," ",$ttopic);
$ttopic = str_replace(";"," ",$ttopic);
$ttopic = str_replace("<"," ",$ttopic);
$ttopic = str_replace(">"," ",$ttopic);
$ttopic = str_replace("|"," ",$ttopic);
$ttopic = str_replace("~"," ",$ttopic);
$ttopic = str_replace("'"," ",$ttopic);
$ttopic = str_replace('"',' ',$ttopic);
$ttopic = explode(" ",$ttopic);
$badwordlist = explode("\n",$badsearchwords);
$y = count($ttopic);
if($y>1) {
  foreach($ttopic as $tt) {
  	if(!in_array($tt, $badwordlist)) {
  		if(strlen($tt)>=$minwordlength && strlen($tt)<=$maxwordlength) $x++;
  		if($x>1 && (strlen($tt)>=$minwordlength && strlen($tt)<=$maxwordlength)) $like_string .= " OR t.topic LIKE ";
  		if(strlen($tt)>=$minwordlength && strlen($tt)<=$maxwordlength) $like_string .= "'%".$tt."%'";
  }
}
} else $like_string = "'%$threadtopic%'";
if($like_string) {
	$similar = $db->query("SELECT
                      t.threadid, t.boardid, x.title, x.boardid, t.prefix, t.topic, t.starttime, t.starterid, t.starter, t.lastposttime, t.lastposterid, t.lastposter, t.replycount, t.views, t.attachments, t.closed, t.important, t.pollid
                      FROM bb".$n."_threads t, bb".$n."_boards x
                      LEFT JOIN bb".$n."_boards b ON (t.boardid=b.boardid)
                      WHERE t.visible='1'
                      AND t.closed <> 3
                      AND t.threadid <> $threadid
                      AND b.password=''
                      AND t.boardid=x.boardid
                      AND t.boardid IN (0".GetAccessableForums().")
                      AND (t.topic LIKE ".$like_string.")
                      ORDER BY t.lastposttime DESC
                      LIMIT 0, 5;");
	}
if($like_string && $db->num_rows($similar)) {
	$i = "0";
	while ($row = $db->fetch_array($similar)) {
		$i++;
		$tdclass = getone($i, "tablea", "tableb");
		$started = formatdate($wbbuserdata['dateformat'], $row['starttime'],1);
		$started .= " <span class=\"time\">".formatdate($wbbuserdata['timeformat'], $row['starttime'])."</span>";
		$lastreply = formatdate($wbbuserdata['dateformat'], $row['lastposttime'],1);
		$lastreply .= " <span class=\"time\">".formatdate($wbbuserdata['timeformat'], $row['lastposttime'])."</span>";
		if ($row['replycount'] >= 1000) $row['replycount'] = number_format($row['replycount'], 0, "", $lang->get("LANG_GLOBAL_THOUSANDS_SEP"));
		if ($row['views'] >= 1000) $row['views'] = number_format($row['views'], 0, "", $lang->get("LANG_GLOBAL_THOUSANDS_SEP"));
		if (strlen($row['topic']) > 60) $row['topic'] = substr($row['topic'], 0, 54).' [...]';
		$row['topic'] = htmlconverter($row['topic']);
		eval("\$similar_thread_bit .= \"".$tpl->get("thread_similarthread_bit")."\";");
	}
	eval("\$similar_thread = \"".$tpl->get("thread_similarthread")."\";");
}
/* Ähnliche Themen Ende */
 

poweruser_85

Neuer Benutzer
Ich habe den Ähnliche Themen hack schonmal in meine Forum installiert gehabt.

Jetzt hab ich jedoch auf 2.3.1 upgedated und das jgs-xa Portal installiert.

Ich habe den Hack schon mehrmals zu installieren versucht, aber mir wird einfach die Tabelle mit den letzten Themen nich angezeigt.

Was kann ich nur falsch gemacht haben? Könnte mir jemand bitte helfen?

Thomas

PS: Ich häng mal eine Kopie meiner thread.tpl und meiner thread.php an. Vielleicht kann jemand damit was anfangen.
 

Anhänge

  • edited.zip
    10,9 KB · Aufrufe: 59

rellek

relativ sensationell
Teammitglied
Ich schätze mal, das liegt daran, dass du die Ur-Version installiert hattest. Die fand eh nicht so viel *g*

Hab dir mal die aktuelle Beta eingebaut - das Template muss nicht geändert werden.
 

Anhänge

  • edited.zip
    11,2 KB · Aufrufe: 68
S

Shackles

Guest
Parse error: parse error, unexpected T_STRING in /var/www/web13/html/wbb2/thread.php on line 1013

Und nu?
 
S

Shackles

Guest
Ich habs wieder ausgebaut, könntest du mir die thread.php bearbeiten?

Das wäre wirklich superlieb! :)
 

Anhänge

  • thread.php.txt
    35 KB · Aufrufe: 151
S

Shackles

Guest
Jetzt kommt:

SQL-DATABASE ERROR

Database error in WoltLab Burning Board (2.3.4): Invalid SQL: SELECT t.threadid, t.boardid, x.title, x.boardid, t.prefix, t.topic, t.starttime, t.starterid, t.starter, t.lastposttime, t.lastposterid, t.lastposter, t.replycount, t.views, t.attachments, t.closed, t.important, t.pollid FROM bb1_threads t, bb1_boards x LEFT JOIN bb1_boards b ON (t.boardid=b.boardid) WHERE t.visible='1' AND t.closed <> 3 AND t.threadid <> 1298 AND b.password='' AND t.boardid=x.boardid AND t.boardid IN (0,1,129,40,122,53,125,94,128,77,93,4,130,13,11,8,9,10,14,12,16,119,31,32,33,57,56,30,104,42,150,131,156,142,90,91,54,87,151,157,105,106,75,109,152,43,65,45,55,44,24,23,126,2,3,95,132,102,7,123,28,29,74,27,139,137,138,136,134,6,51,52,61,48,46,49,47,59,22,135,149,144,147,148,155,133,153,154) AND (t.topic LIKE '%Boardregeln%') ORDER BY t.lastposttime DESC LIMIT 0, 5;
mysql error: Unknown column 't.boardid' in 'on clause'
mysql error number: 1054
mysql version: 5.0.18-Debian_1-log
php version: 4.4.0-1
Date: 16.02.2006 @ 16:12
Script: /thread.php?postid=14280#post14280
Referer: http://www.hilfezurselbsthilfe-community.de/index.php
 

rellek

relativ sensationell
Teammitglied
grml... verdammtes mysql5.... hättest du die möglichkeit, auf eine ältere version "downzugraden", bzw. könntest du dieses downgrade veranlassen?

hab für den mysql5-bug leider noch keine lösung
 
S

Shackles

Guest
Hm ne, ich glaube nicht, dann werde ich ihn wieder ausbauen, ich danke dir aber trotzdem! :)
 

faruk

Neuer Benutzer
Hallo rellek,

habe gerade dein hack eingebaut, ersteinmal vielen dank für dein nützlichen hack.

und zum anderen wenn man sich bei dir anmeldet erkennt man in der registrierung nicht die eingabefelder, man muss mit der maus die eingabefelder suchen damit man die daten eingeben kann.

und zum hack.
es ist so das der ziemlich viele sachen findet die im grunde nicht viel miteinander zutun haben.
wie ist den die sortierung der trefferquote?

am besten wäre wenn sie zuerst die themen auflistet die auch in der gleichen katogorie sind und dann die anderen.

und deine zipdatei vom ersten beitrag ist nicht bugfrei man muss sich erst die bugfreien aus den fortlaufenden beiträgen suchen damit man es zum laufen bringen kann.
besser wäre es doh wenn du die zipdatei aktuallisierst.

lieben gruß
faruk
 

rellek

relativ sensationell
Teammitglied
1) Trefferquote wird überhaupt nicht berücksichtigt. Der sucht nach Wörtern, die im Topic vorkommen - und sortiert wird das ganze nach der letzten Antwort des gefundenen Themas
2) Das Archiv wird nach Beendigung des Beta-Tests aktualisiert. Wenn du dir den Thread durchliest, gibts bspw noch mit MySQL 5 Probleme.

Außerdem ist das ZIP-Archiv so gesehen "bugfrei", denn es funktioniert sauber - wenn es auch nicht so viel findet.
 

faruk

Neuer Benutzer
Original von rellek
1) Trefferquote wird überhaupt nicht berücksichtigt. Der sucht nach Wörtern, die im Topic vorkommen - und sortiert wird das ganze nach der letzten Antwort des gefundenen Themas

wäre denn die relevanz der Trefferquoten nicht automatisch höher wenn zuerst die aufgelistet werden die in der gleiche Katogorie sind.

Ich spreche das an weil bei mir zum Beispiel Das Thema " Suche Hilfe zum Miodellstehen" als ähnlich definiert wird wie " Suche neue Kamera"...
Das eine Steht bei mir unter "Kamerakauf" und das andere unter sonstigem.

wie schwer wäre den eine änderung des codes dahingehend :D

gruß
faruk
 

rellek

relativ sensationell
Teammitglied
Da wüsst ich grad nicht, wie man der SQL-Abfrage einreden können soll, dass das aktuelle Forum die meiste Priorität bekommt... In der Abfrage sind alle durchsuchbaren Foren gleichberechtigt...
 

faruk

Neuer Benutzer
würde das weiterhelfen?
http://mysql-faq.sourceforge.net/anwendung2.html

bevor deine abfrage nach den letzten 5 ähnlichen themen aus dem datenbank geholt werden bräcuhte man daüfr den Board-id von dem betreffenden Beitrag. steht sie dort irgendwo drinn den man dafür benutzen könnte.

ich habe mir das mal angschaut aber da sind so viele wo ich noch nicht ersehen konnte welches den der Boardid ist welches von dem aktuellen Thema ist:

gruß
faruk
 
Oben