Auto Link-Name-TO-Thread-Topic/Board-Title

XeRanoN
Titel: Auto Link-Name-TO-Thread-Topic/Board-Title
Version: 1.2
Beschreibung: Was macht der Hack?
Der Hack erkennt beim posten einer URL (per BB-Code [URL]) ob diese ein Link zu einem Thread oder einem Post ist,d er sich im Forum befindet. Wenn dies so ist nimmt er als Linkbezeichnung das Topic des Threads auf den der Link führt.

Copyright?
Gibts nichts sichtbares.

Ersteller und dessen Stellungnahme?
Ersteller bin ich, Roger "Xeranon" Tschallener. Ich hafte für keinerlei Schäden die dieser Hack anrichten könnte. Die Gefahr das er dies tut ist jedoch gering.

Einbauzeit
Unter einer Minute ^^

Update auf v1.1
Wenn ein Linktitel angegeben wurde, wird dieser nun nicht mehr überschrieben.

Update auf v1.2
Wenn ein Link zu einem Unter-)Board gemacht wird, nimmt dieser, wenn nich anders angegeben, den Boardtitel als Linknamen.

Der Hack darf weder als eigener ausgegeben werden, noch weitergegeben oder von jemanden anderen zum Download angeboten werden (auch nicht in abgeänderter Form). Des Weiteren ist es nicht erlaubt, den Hack im Zusammenhang mit einem Installationsservice oder Aehnlichem anzubieten.
----
Demo: http://www.ahnungslos.ch

weiter zum Download
ecaya
Tach...
Wollte den mal ausprobieren, doch der Hack kollidiert leider mit
einem anderen Hack den ich schon drin habe. Der Redirect Hack liegt genau in den selben Zeilen der clarse_parse
Vielleicht könntest du den anpassen?
XeRanoN
Jerline
Klappt, den hab ich schon ne weile gesucht.

vielen dank dafür....
gindaisy
Hallo Freude

Habe die Dateiänderung jetzt gerade vorgenommen, jedoch werden Links immer noch wie gehabt angezeigt. Habs wieder ausgebaut, noch mal probiert - aber man sieht immer noch nur den Link. Ich habe bisher zwar einige Hacks eingebaut, jedoch keinen, der eine Dateiänderung in der selben Datei benötigt.. Was ist der Fehler? Habe ein WbbLite 1.0.2. ...


LG
Malfrosch
Du hast bedacht, dass das nur neue Links betrifft? Alte gepostete Links bleiben so stehen. Es sei denn, du editierst den Beitrag.
gindaisy
Huhu Freude

Habe ich im Prinzip schon. Neue Thema erstellt und davon den Link genommen. Oder muss auch das Forum an sich, sprich eine Kategorie neu erstellt worden sein, damit das läuft?


Liebe Grüße,
gindaisy
AmieDelancy
Huhu,
mir geht es so wie gindaisy.
Irgendwie tut sich nichts, egal in welcher Form ich den Link poste, egal ob ich einen Post/Thema neu erstelle.

lg
dirdy-birdy
habt ihr auch die URL eingetragen im ACP? Unter Einstellungen ---> globale Optionen ---> URL zum Forum das war einmal ein Fehler bei mir smile und wenn ihr sie eingetragen habt, auch dann richtig ohne / am Ende?
Beckebans
Eben zum Test eingebaut. Funktioniert bei mir auch nicht. Board-URL ist richtig gesetzt.
Speedstick
Ich habe das Problem auch das er nicht geht
Beckebans
Es liegt am Vergleich $url2board==$parseurl. $url2board ist bei mir "http://www.otb-server.de/wbblite" und $parseurl ist "http://www.otb-server.de". Bei Foren die nicht in einem Unterordner sind, sollte es also gehen. Ich kann die $url2board auch parsen lassen, um auf die gleiche Domain zu kommen. Dann funktioniert es. Aber was ist mit den Domains, auf denen mehrere Foren sind?
Es müsste also der Ordner dahinter. Beim parsen habe ich jedoch nur die Möglichkeit den Pfad auszugeben, welcher auch einen Dateinamen enthält. Wie kann ich denn einen unterschiedlich langen Dateinamen und den Slash davor abschneiden?


Edit:

Ok, war doch nicht so kompliziert. php kennt das Problem schon und hat ne Funktion dafür smile

Einfach (nur Fix)

Suche:
php:
1:
$parseurl $parseurl[scheme] . "://" $parseurl[host];
Ersetze durch:
php:
1:
$parseurl $parseurl[scheme]."://".$parseurl[host].dirname($parseurl[path]);




Ausführlich (Fix + Link Titel)

Suche:
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:
function formaturl($url$title=""$maxwidth=60$width1=40$width2=-15) {
  global $url2board$master_board_name$n$db;
  $parseurl parse_url($url);
  $parseurl $parseurl[scheme] . "://" $parseurl[host];
  if($url2board==$parseurl && !trim($title)) { 
   list ($pre$after) = split('threadid='$url);
   list ($threid$after) = split('&'$after);
   if(!$threid) {
    list ($pre$after) = split('postid='$url);
    list ($poid$after) = split('&'$after);
    $selteid=$db->query_first("SELECT threadid  FROM bb".$n."_posts WHERE  postid='$poid'");
    $threid $selteid[threadid];
   }
   if($threid)
   {
    $seltop=$db->query_first("SELECT topic FROM bb".$n."_threads WHERE  threadid='$threid'");
    if($seltop[topic]) $title $seltop[topic];
   } else {
    $title $url;
   }
   list ($pre$after) = split('boardid='$url);
   list ($boaid$after) = split('&'$after);
   if($boaid)
   {
    $selboid=$db->query_first("SELECT title  FROM bb".$n."_boards WHERE  boardid='$boaid'");
    if($selboid[title]) $title $selboid[title];
   } else {
    if(!threid$title $url;
   }
  } else {
  if(!trim($title)) $title=$url;
  if(!preg_match("/[a-z]:\/\//si"$url)) $url "http://$url";
  if($this->cuturls==&& strlen($title)>$maxwidth && !strstr(strtolower($title),"[img]") && !strstr(strtolower($title),"<img")) $title substr($title,0,$width1)."...".substr($title,$width2);
  }
  return "<a href=\"$url\" target=\"_blank\">".str_replace("\\\"""\""$title)."</a>";
 }

Ersetze durch:
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:
function formaturl($url$title=""$maxwidth=60$width1=40$width2=-15) {
  global $url2board$master_board_name$n$db;
  $parseurl parse_url($url);
  $parseurl $parseurl[scheme]."://".$parseurl[host].dirname($parseurl[path]);
  if($url2board==$parseurl && !trim($title)) { 
   list ($pre$after) = preg_split('/threadid=/'$url);
   list ($threid$after) = preg_split('/&/'$after);
   if(!$threid) {
    list ($pre$after) = preg_split('/postid=/'$url);
    list ($poid$after) = preg_split('/&/'$after);
    $selteid=$db->query_first("SELECT threadid FROM bb".$n."_posts WHERE postid='$poid'");
    $threid $selteid[threadid];
   }
   if($threid) {
    $seltop=$db->query_first("SELECT topic FROM bb".$n."_threads WHERE threadid='$threid'");
    if($seltop[topic]) {
     $title $seltop[topic];
     return "<a href=\"".$url."\" title=\"Gehe zum Thema ".strip_tags(str_replace("\\\"""\""$title))."\" target=\"_blank\">".str_replace("\\\"""\""$title)."</a>";
    }
   } else {
    $title $url;
   }
   list ($pre$after) = preg_split('/boardid=/'$url);
   list ($boaid$after) = preg_split('/&/'$after);
   if($boaid) {
    $selboid=$db->query_first("SELECT title FROM bb".$n."_boards WHERE boardid='$boaid'");
    if($selboid[title]) {
     $title $selboid[title];
     return "<a href=\"".$url."\" title=\"Gehe zum Board ".strip_tags(str_replace("\\\"""\""$title))."\" target=\"_blank\">".str_replace("\\\"""\""$title)."</a>";
    }
   } else {
    if(!threid$title $url;
   }
  } else {
   if(!trim($title)) $title=$url;
   if(!preg_match("/[a-z]:\/\//si"$url)) $url "http://$url";
   if($this->cuturls==&& strlen($title)>$maxwidth && !strstr(strtolower($title),"[img]") && !strstr(strtolower($title),"<img")) $title substr($title,0,$width1)."...".substr($title,$width2);
  }
  return "<a href=\"".$url."\" target=\"_blank\">".str_replace("\\\"""\""$title)."</a>";
}
AmieDelancy
Huhu,

super. Vielen Dank, jetzt klappt es *knuff*

Ich hab trotzdem nochmal eine Frage.
Und zwar kann man bei Bplaced beispielsweise die Foren über .net .de und .com erreichen. Jetzt hab ich im ACP die Adresse mit .net eingetragen, heißt, dass auch nur die Links mit .net umgewandelt werden.

Verständlich?

Gibt es da auch eine Alternative, dass es eben für alle drei geht? Wenn nicht ist auch nicht dramatisch, wenn man es weiß ist ja kein Problem in .net umzuschreiben großes Grinsen

LG und noch ein dickes Danke!
Beckebans
Irgendwie geht das bestimmt. Ich denke aber mal, das das relativ aufwändig wäre.
Schrimm
Zitat:
Original von Beckebans
Irgendwie geht das bestimmt. Ich denke aber mal, das das relativ aufwändig wäre.

Nicht unbedingt.
Anstatt url2board einfach einen zweiten Eintrag erstellen, der "textarea" ist anstatt "text" oder eben "url2board" zu einer textarea umgestalten.
So können auch mehrere "urls" zum Board angegeben werden und auch abgefragt.
AmieDelancy
Ich muss gestehen, ich check davon nicht sehr viel smile und wenn es Aufwand macht, will ich keinen damit belasten.
Ist so auch schon toll großes Grinsen
Secretly
Ich habe seit neustem eine Fehlermeldung oberhalb bestimmter Themen.

Zitat:
Warning: parse_url(http://) [function.parse-url]: Unable to parse URL in /is/htdocs/wp1172474_BQBAATSYFN/projekt/acp/lib/class_parse.php on line 271

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/wp1172474_BQBAATSYFN/projekt/acp/lib/class_parse.php:271) in /is/htdocs/wp1172474_BQBAATSYFN/projekt/acp/lib/functions.php on line 97

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/wp1172474_BQBAATSYFN/projekt/acp/lib/class_parse.php:271) in /is/htdocs/wp1172474_BQBAATSYFN/projekt/acp/lib/functions.php on line 97


in der Zeile 271 steht
code:
1:
  $parseurl = parse_url($url);


Nachdem ich gegooglet habe, habe ich die Zeile folgendermaßen verändert:
code:
1:
  $parseurl = parseURL($url);


Nun ist zwar die Fehlermeldung weg, aber es werden eben keine URLs umgewandelt. Gibt es eine Lösung wo sowohl die Fehlermeldung weg ist, wie auch die URL umgewandelt wird?
sadagares
Ich habe dasselbe Problem wie Secretly. Gibt es jemanden, der einen Lösungsvorschlag hat?
Sidney
Hallo ihr Lieben,
ich hab den Hack ebenfalls eingebaut, aber ich glaube, er kollidiert, mit meiner Subdomain.
Mein Board liegt quasi in einem ordner, der automatisch zu einer Subdomain umgewandelt wird.
Also z.B. heißt der Ordner Bla und meine Domain www.blubb.de
Dann ist die Subdomain http://bla.blubb.de
Egal ob ich einen neuen Thread erstellt habe, oder den Link vom alten nehm, es werden immer die unumgewandelten Links angezeigt. In den Globalen Optionen hab ich sowohl den Link via unterordner (also www.blubb.de/bla) als auch die Subdomain gestestet. Funktioniert beides nicht. Habt ihr mir eine Hilfe?
Steinadler
Versuche es mal so:

suche in der acp/lib/class_parse.php:

php:
1:
$parseurl $parseurl[scheme] . "://" $parseurl[host];

ersetze durch:

php:
1:
$parseurl $parseurl[scheme] . "://" $parseurl[host] . '/bla';


bla natürlich durch den exakten Namen Deines verwendeten Unterordners ersetzen.