[2.3] Ähnliche Themen

Dieses Thema im Forum "hacks von rellek" wurde erstellt von rellek, 1 Januar 2005.

  1. rellek

    rellek relativ sensationell Mitarbeiter

    Weniger...

    letztendlich soll ja dennoch ein "aktueller" thread gegenüber eines alten threads priorisiert werden...
     
  2. faruk

    faruk Neuer Benutzer

    Hallo Relleck,

    sorry wegen dem bug sache, du hast natürlich recht, ich meinte eigentlich die codeveränderungen die danach kommen um mehr finden zu lassen, die ersten laufen bei mir nicht.
    da bin ich wohl ein wneig durcheinander gekommen



    und zum sortieren bzw nach mehr relevanz in den trefferquoten.

    mann kan mehr als eine oder by argument in der sql query angeben, so wie ich es bis jetzt verstadnden habe.

    ich habe mal michs leber versucht... und es funktioniert. Zuerst werden die Themen aufgelistet die in der gleichen katogorie sind und dann kommen die anderen.. udn das schön nach dem letzten posten neu sortiert.

    hier der code, wobei wie gesgat eigentlich nur ein einzige argument mehr ist.

    PHP:
    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.boardid != "
    .$boardid.", t.lastposttime DESC
                          LIMIT 0, 5;"
    );
        }
    wobei ja meien veränderung nur hier dirnn steckt

    PHP:
    ORDER BY t.boardid != ".$boardid."t.lastposttime DESC
    und als anhang den unterschied in Bilder.
    das 1. bild vorher das 2. nachher


    Gruß
    faruk
     

    Anhänge:

  3. rellek

    rellek relativ sensationell Mitarbeiter

    Hm... Aber irgendeinen Grund muss es damals gehabt haben, dass ich das ausgeschlossen habe :nachdenk:
     
  4. IBK_modell

    IBK_modell [inaktiv]

    Hallo Rellek,

    Erstmal großes Lob an dich und deine Hack's die sind alle sehr gut und funzt. auch wirklich gut. Auch lassen sie sich sehr gut einbauen.

    Auch dieser Hack funzt einwandfrei, wenn man ihn richtig einbaut, inkl. der Beta und der erweiterung von faruk!!!

    Jedoch habe ich eine Fragen:

    1, Kann man wenn man es Nachträgelich einbaut irgentwie eine Abfrage machen das es auch bei den schon vorhanden beiträgen schaut oder funzt das nur ab dem Tage des einbaus und wenn dann neue beiträge geschriebenwerden???

    2,
    Wie kann ich die Tabellenbreite beinflussen???

    Siehe:

    [​IMG]

    da ist mir die erste [Threat] zu breit und die letzte [Statistik] zu schmal.

    bitte um hilfe Danke

    mfg

    Robert
     
  5. rellek

    rellek relativ sensationell Mitarbeiter

    Wegen erstens: Der Hack beinhaltet alle Themen, die es gibt (mit der Ausnahme der Themen, die in Foren stehen, in die man keinen Zugriff hat).

    Wegen zweitens: Da wende dich mal an faruk, der ist da sicher aussagekräftiger :)

    HTH
     
  6. IBK_modell

    IBK_modell [inaktiv]

    @rellek,

    Danke für die Info, Das zu erstens ist mir zu spät aufgefallen es werden auch die schon vorhandenen angezeigt.

    wegen zweitens:

    Ist der Hack nicht von dir??

    Ist faruk noch hier im Forum?? oder sol ich ihn per mail oder pn anschreiben?

    Danke für die Hilfe
     
  7. rellek

    rellek relativ sensationell Mitarbeiter

  8. IBK_modell

    IBK_modell [inaktiv]

    @rellek,

    Danke hat sich erledigt bin von selber drauf gekommen.

    mfg
     
  9. rellek

    rellek relativ sensationell Mitarbeiter

    Für alle mit mySQL 5-Problemen!!!

    Ersetze die Codestelle in der thread.php damit:
    Code:
    /* Ähnliche 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
                          WHERE t.visible='1'
                          AND t.closed <> 3
                          AND t.threadid <> $threadid
                          AND x.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 */
     
  10. Shackles

    Shackles Guest

    Geht nicht, dann kommt:

    Parse error: syntax error, unexpected '"' in /var/www/web13/html/wbb2/thread.php on line 1075

    Ich häng dir mal meine thread.php dran ohne den Einbau, kannst es ja mal versuchen wenn du magst, vielleicht hab ich auch was falsch gemacht..
     

    Anhänge:

  11. rellek

    rellek relativ sensationell Mitarbeiter

    Doch geht, aber irgendwie spinnt der Parser rum hier....

    Kannst du die thread.php mal eben anhängen?
     
  12. Shackles

    Shackles Guest

    Hier :)
     

    Anhänge:

  13. rellek

    rellek relativ sensationell Mitarbeiter

    naja, ich meinte zwar eigentlich dir, die den parse-error verursache (weil sonst nützt die fehlermeldung auch nichts), aebr die sollte jetzt gehen.

    und mein parser i.ü. auch :) (d.h. Parse-Error sollte keiner mehr entstehen)
     

    Anhänge:

  14. Shackles

    Shackles Guest

    Cool, danke es funzt!

    Bevor ich jetzt großartig im Quelltext des Templates rumfummel, wie setze ich es nach unten?
     
  15. rellek

    rellek relativ sensationell Mitarbeiter

    Meinst du die Ähnliche-Themen-Box? Die ist standardmäßig unten, da hast du wohl das Template "thread" nicht korrekt bearbeitet...
     
  16. Shackles

    Shackles Guest

    Habs nun unten, Rellek, haste ICQ oder so?
    Muss dich mal was fragen!
     
  17. ProfJack

    ProfJack [inaktiv]

  18. rellek

    rellek relativ sensationell Mitarbeiter

    Dazu geh mal lieber zum Autor des Hacks, das ist nicht meine Version (die braucht nämlich gar keine Setup-Datei)
     
  19. ProfJack

    ProfJack [inaktiv]

    Ist deine, modifiziert von Flavius ... und er hat kein eigenes Forum ... oder doch?
     
  20. rellek

    rellek relativ sensationell Mitarbeiter

    Also ist Flavius für den Support seiner Modifizierung verantwortlich :rolleyes:
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deinem Erleben anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden