[Bugfix] Raw Url Converter 0.9

Kleine Codeänderungen oder Mini-MODs
Keine Anfragen!!! -- No requests!!!

Moderator: Supporter

[Bugfix] Raw Url Converter 0.9

Beitragvon AmigaLink » 23. Jun 2005 21:54

Dieser kleine Fix verhindert das beim umwandeln des links, texte die sich (innerhalb der gleichen zeile) vor und/oder hinter dem link befinden, gelöscht bzw ausgeblendet werden!

Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#

includes/bbcode.php

#
#----------[ FIND ]-------------------------------------
#

         "#(\s)(".$phpbb_url.")(viewtopic\.php\?t=|viewforum\.php\?f=)(\d+)(\S*)([^ \"\n\r\t<]*)#i",

#
#----------[ REPLACE WITH ]-----------------------------
#

         "#([\n ])(".$phpbb_url.")(viewtopic\.php\?t=|viewforum\.php\?f=)(\d+)([^ \"\n\r\t<]*)#i",

#
#----------[ SAVE AND CLOSE ALL FILES ]-----------------
#
# EoM
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon AmigaLink » 17. Aug 2005 15:09

Ok - aufgrund mehrerer anfragen, hier mal die änderungen um den Funktionsumfang zu erlangen der hier auf AmigaLink.de läuft. :D
(obiger fix ist hierin enthalten)
Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#

includes/bbcode.php

#
#----------[ FIND ]-------------------------------------
#

function get_topic_titel($id)
{
    global $db;   
    $sql = "SELECT topic_title FROM " . TOPICS_TABLE . " WHERE topic_id = '$id'";
    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, "Could not obtain newer/older topic information", '', __LINE__, __FILE__, $sql);
    }
    $titel = $db->sql_fetchrow(); 
    return $titel['topic_title'];
}

function get_forum_titel($id)
{
    global $db;   
    $sql = "SELECT forum_name FROM " . FORUMS_TABLE . " WHERE forum_id = '$id'";
    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, "Could not obtain newer/older Forum information", '', __LINE__, __FILE__, $sql);
    }
    $titel = $db->sql_fetchrow();
    return $titel['forum_name'];
}

function preg_replace_callback_func_raw_url_to_url_with_titel($subpattern)
{
    $url = $subpattern[2].$subpattern[3].$subpattern[4].$subpattern[5];
    if($subpattern[3] == "viewtopic.php?t=")
        $titel = get_topic_titel($subpattern[4]);
    else
        $titel = get_forum_titel($subpattern[4]);
    return $subpattern[1]."<a href=\"".$url."\" target=\"_blank\">".$titel."</a>";
}

function raw_url_to_url_with_titel($ret)
{
    $phpbb_url = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/";

    $ret = preg_replace_callback
    (
        "#(\s)(".$phpbb_url.")(viewtopic\.php\?t=|viewforum\.php\?f=)(\d+)(\S*)([^ \"\r\t<]*)#i", 'preg_replace_callback_func_raw_url_to_url_with_titel',
        $ret
    );
    return $ret;
}

#
#----------[ REPLACE WITH ]-----------------------------
#

function get_post_titel($id)
{
     global $db;
    $sql = "SELECT post_subject FROM " . POSTS_TEXT_TABLE . " WHERE post_id = '$id'";
     if ( !($result = $db->sql_query($sql)) )
     {
         message_die(GENERAL_ERROR, "Could not obtain post information", '', __LINE__, __FILE__, $sql);
     }
     $post_titel = $db->sql_fetchrow();

    $sql = "SELECT t.topic_title FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
            WHERE p.post_id = '$id'
           AND t.topic_id = p.topic_id";
     if ( !($result = $db->sql_query($sql)) )
     {
         message_die(GENERAL_ERROR, "Could not obtain newer/older topic information", '', __LINE__, __FILE__, $sql);
     }
     $topic_titel = $db->sql_fetchrow();

    if ($post_titel['post_subject'] != '')
    {
       return $post_titel['post_subject'];
    } else
    {
       return $topic_titel['topic_title'];
    }
}

function get_topic_titel($id)
{
     global $db;   
     $sql = "SELECT topic_title FROM " . TOPICS_TABLE . " WHERE topic_id = '$id'";
     if ( !($result = $db->sql_query($sql)) )
     {
         message_die(GENERAL_ERROR, "Could not obtain newer/older topic information", '', __LINE__, __FILE__, $sql);
     }
     $titel = $db->sql_fetchrow();
     return $titel['topic_title'];
}

function get_forum_titel($id)
{
     global $db;   
     $sql = "SELECT forum_name FROM " . FORUMS_TABLE . " WHERE forum_id = '$id'";
     if ( !($result = $db->sql_query($sql)) )
     {
         message_die(GENERAL_ERROR, "Could not obtain newer/older Forum information", '', __LINE__, __FILE__, $sql);
     }
     $titel = $db->sql_fetchrow();
     return $titel['forum_name'];
}

function preg_replace_callback_func_raw_url_to_url_with_titel($subpattern)
{
     $url = $subpattern[2].$subpattern[3].$subpattern[4].$subpattern[5];
     if($subpattern[3] == "viewtopic.php?t=")
         $titel = get_topic_titel($subpattern[4]);
     else if($subpattern[3] == "viewtopic.php?p=")
         $titel = get_post_titel($subpattern[4]);
     else
         $titel = get_forum_titel($subpattern[4]);
     return $subpattern[1]."<a href=\"".$url."\" target=\"_self\">".$titel."</a>";
}

function raw_url_to_url_with_titel($ret)
{
     $phpbb_url = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/";

     $ret = preg_replace_callback
     (
         "#([\n ])(".$phpbb_url.")(viewtopic\.php\?t=|viewtopic\.php\?p=|viewforum\.php\?f=)(\d+)(\n*)([^ \"\n\r\t<]*)#i", 'preg_replace_callback_func_raw_url_to_url_with_titel',
         $ret
     );
     return $ret;
}

#
#----------[ SAVE AND CLOSE ALL FILES ]-----------------
#
# EoM


Zugefügt nach 15 Minute(n):

Und das kann er dann :arrow: http://www.amigalink.de/viewtopic.php?t=227 8)
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon mgutt » 23. Aug 2005 12:51

Hi,

geht nicht.

Habe verschiedene Versionen probiert. (betrifft Funktion "raw_url_to_url_with_titel($ret)")

Schau mal im Code habe ich Kommentare eingefügt:
Code: Alles auswählen
// Mod Begin Forumtitle Converter
function get_post_titel($id)
{
    global $db;
   $sql = "SELECT post_subject FROM " . POSTS_TEXT_TABLE . " WHERE post_id = '$id'";
    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, "Could not obtain post information", '', __LINE__, __FILE__, $sql);
    }
    $post_titel = $db->sql_fetchrow();

   $sql = "SELECT t.topic_title FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
           WHERE p.post_id = '$id'
          AND t.topic_id = p.topic_id";
    if ( !($result = $db->sql_query($sql)) )
    {
       message_die(GENERAL_ERROR, "Could not obtain newer/older topic information", '', __LINE__, __FILE__, $sql);
    }
    $topic_titel = $db->sql_fetchrow();

   if ($post_titel['post_subject'] != '')
   {
      return $post_titel['post_subject'];
   } else
   {
      return $topic_titel['topic_title'];
   }
}

function get_topic_titel($id)
{
    global $db;   
    $sql = "SELECT topic_title FROM " . TOPICS_TABLE . " WHERE topic_id = '$id'";
    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, "Could not obtain newer/older topic information", '', __LINE__, __FILE__, $sql);
    }
    $titel = $db->sql_fetchrow();
    return $titel['topic_title'];
}

function get_forum_titel($id)
{
    global $db;   
    $sql = "SELECT forum_name FROM " . FORUMS_TABLE . " WHERE forum_id = '$id'";
    if ( !($result = $db->sql_query($sql)) )
    {
        message_die(GENERAL_ERROR, "Could not obtain newer/older Forum information", '', __LINE__, __FILE__, $sql);
    }
    $titel = $db->sql_fetchrow();
    return $titel['forum_name'];
}

function preg_replace_callback_func_raw_url_to_url_with_titel($subpattern)
{
    $url = $subpattern[2].$subpattern[3].$subpattern[4].$subpattern[5];
    if($subpattern[3] == "viewtopic.php?t=")
        $titel = get_topic_titel($subpattern[4]);
    else if($subpattern[3] == "viewtopic.php?p=")
        $titel = get_post_titel($subpattern[4]);
    else if($subpattern[3] == "ftopic")
        $titel = get_topic_titel($subpattern[4]);
    else if($subpattern[3] == "viewtopic.php?p=")
        $titel = get_post_titel($subpattern[4]);
    else if($subpattern[3] == "fpost")
        $titel = get_post_titel($subpattern[4]);
    else if($subpattern[3] == "forums")
        $titel = get_forum_titel($subpattern[4]);
    else
        $titel = get_forum_titel($subpattern[4]);
    return $subpattern[1]."<a href=\"".$url."\" target=\"_self\">".$titel."</a>";
}

function raw_url_to_url_with_titel($ret)
{
// 1. Variante geht nicht (Amigalink)
/*
    $phpbb_url = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/";

    $ret = preg_replace_callback
    (
        "#([\n ])(".$phpbb_url.")(forums|fpost|ftopic|viewtopic\.php\?t=|viewtopic\.php\?p=|viewforum\.php\?f=)(\d+)(\n*)([^ \"\n\r\t<]*)#i", 'preg_replace_callback_func_raw_url_to_url_with_titel',
        $ret
    );
*/

// 2. Variante geht, aber bei Zitat mit </td> (Oxpus)

    global $board_config;
    $phpbb_url = $board_config['server_name'].$board_config['script_path'];

    $ret = preg_replace_callback
    (
        "#([\n ])([\w]+?://".$phpbb_url.")(forums|fpost|ftopic|viewtopic\.php\?p=|viewtopic\.php\?t=|viewforum\.php\?f=)(\d+)(\S*)([^ \"\n\r\t<]*)#i", 'preg_replace_callback_func_raw_url_to_url_with_titel',
        $ret
    );


// 3. Variante geht nicht (Oxpus)
/*
    global $board_config;
    $phpbb_url = $board_config['server_name'].$board_config['script_path'];

    $ret = preg_replace_callback
    (
        "#([\n ])(".$phpbb_url.")(forums|fpost|ftopic|viewtopic\.php\?p=|viewtopic\.php\?t=|viewforum\.php\?f=)(\d+)(\S*)([^ \"\n\r\t<]*)#i", 'preg_replace_callback_func_raw_url_to_url_with_titel',
        $ret
    );
*/

// 4. Variante - geht nicht, da htm Links abgeschnitten werden zu http://www.maxrev.de/ftopic1234 - also ohne .html (Mischung aus Amigalink und Oxpus)
/*
    global $board_config;
    $phpbb_url = $board_config['server_name'].$board_config['script_path'];

    $ret = preg_replace_callback
    (
        "#([\n ])([\w]+?://".$phpbb_url.")(forums|fpost|ftopic|viewtopic\.php\?t=|viewtopic\.php\?p=|viewforum\.php\?f=)(\d+)(\n*)([^ \"\n\r\t<]*)#i", 'preg_replace_callback_func_raw_url_to_url_with_titel',
        $ret
    );
*/
    return $ret;
}
// Mod End Forumtitle Converter
mgutt
User
 
Beiträge: 63
Registriert: 14. Okt 2004 22:23

Beitragvon AmigaLink » 23. Aug 2005 14:22

geht nicht.
Wie du hier im Board, unter dem von mir gepostetem Link, sehen kannst, funktioniert mein Code aus Beitrag #2 einwandfrei!

Ob der Code ebenfalls Funktioniert wenn man (wie du) Short URL's einsetzt, steht auf einem gänzlich anderem Blatt geschrieben! :roll:
Short URLs sind extrem fehleranfällig und der Raw Url Converter ist nicht der einzige MOD dessen Funktion durch sie eingeschränkt wird. Die Regulären Ausdrücke müssten gänzlich umgeschrieben werden, was alles andere als einfach ist und in direkter abhängigkeit zu den von dir eingesetzten Short URLs steht! :?

<!-- BEGIN Off Topic -->
Viel mehr kann ich dir dazu nicht mehr sagen. OXPUS und ich haben nicht ohne grund die Short URLs wieder entfernt bzw. (ich) nie wirklich im Einsatz gehabt!
Die Fehleranfälligkeit sowie evtl. nötige änderungen am Board und der Performaceverlust stehen in keinem verhältnis zum, nicht vorhandenem, nutzen der Short URLs! Die meisten Suchmaschinen kommen heutzutage mit php-Seiten absolut klar. Somit haben Short URLs einen rein ästetischen effekt!
<!-- END Off_Topic -->

Dazu kommt das evtl einige Server die, von mir eingesetzten, Servervariablen nicht zur verfügung stellen (kommt eher selten vor). In dem Fall müsste
Code: Alles auswählen
$phpbb_url = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/";
durch
Code: Alles auswählen
$phpbb_url = $board_config['server_name'].$board_config['script_path'];
ersetzt werden, was ihn aber wieder anfällig für fehlkonfigurationen im ACP macht! :(
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon mgutt » 23. Aug 2005 22:01

short urls sind und bleiben unverzichtbar, wenn man erfolg haben will und auf suchmaschinen angewiesen ist.

Ich kann in Punkto Suchmaschinen doch schon einiges an Diagnose und Erfahrung vorbringen. Oxpus Portal ist schon reichlich voll was Mods angeht. Teiweise loads von 5-10 Sekunden sind Standard, dann hätte ich auch keine Lust Short Urls noch draufzuladen.

Aber ohne geht es wie gesagt einfach nicht, wenn man die Suchmaschinen braucht. Meine Meinung ;)

Aber zurück zum Thema. Das mit den Server Urls hatte ich ja schon probiert, wir man im letzten Versuch sieht, aber dort hatte er mit die Dateiendung abgeschossen. Naja werde mal weiter probieren.
mgutt
User
 
Beiträge: 63
Registriert: 14. Okt 2004 22:23

Beitragvon AmigaLink » 23. Aug 2005 23:15

Also zu den Short URLs kann ich dir aus Erfahrung sagen das es problemlos ohne geht (siehe EmF) :D und das man wenn man damit Experimentiert bzw. sie fehlerhaft Arbeiten auch das Gegenteil erreichen kann (vor meinen Experimenten hatte ich einen PR von 6 auf EmF)! :?

Und die zerschossene Dateiendung kommt nicht von den Servervariablen. Sondern von den, nicht an die Short URLs angepassten, Regulären Ausdrücken.
Ich habe momentan nicht den Kopf um mir da nähere Gedanken zu zu machen, aber versuch mal das hier:
Code: Alles auswählen
    global $board_config;
    $phpbb_url = $board_config['server_name'].$board_config['script_path'];

    $ret = preg_replace_callback
    (
        "#([\n ])([\w]+?://".$phpbb_url.")(forums|fpost|ftopic|viewtopic\.php\?t=|viewtopic\.php\?p=|viewforum\.php\?f=)(\d+)(\n*)([^ \"\n\r\t<]*)(\.html|\.htm)#i", 'preg_replace_callback_func_raw_url_to_url_with_titel',
        $ret
    );
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon oxpus » 24. Aug 2005 09:27

@mgutt
Ich weiß zwar nicht, was Du für eine Anbindung hast, aber mein Portal lädt bei mir meist unter 3 Sekunden ...
Kein Support ausserhalb der Foren!
No support outside the forums!
Benutzeravatar
oxpus
Partner
 
Beiträge: 610
Registriert: 14. Okt 2004 11:55
Wohnort: Bad Wildungen (halt so'n kleines Kurkaff)

Beitragvon AmigaLink » 8. Okt 2005 20:40

Mal rein zur Info: Zum thema Short URLs ging es hier kurz weiter.
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon mariocaz » 21. Okt 2005 19:50

Hi my friend!!

Like you know I have installed this great mod in my forum, but yesterday I installed the Sitemap Google MOD and now the Raw Url Converter Mod don't works. :cry: I think that is because now all the topics in my forums are in .html :(

What Can I do for fix that ?

Regards! :wink:

Added after 15 minutes:

These are the MODS that I installed.....SiteMaps MOD and keyword urls mod.

I atach here if you need to take a look.

Please help me my friend! :oops:

[center][ Attachment gelöscht am 17.01.2007, 01:18 von AmigaLink ][/center]

[center][ Attachment gelöscht am 17.01.2007, 01:18 von AmigaLink ][/center]
mariocaz
User
 
Beiträge: 148
Registriert: 9. Jun 2005 07:35

Beitragvon AmigaLink » 22. Okt 2005 18:11

Sorry mariocaz. I can't help you with this. :(
mgutt has the same problem with an other MOD that rewrite the URLs. MODs like these do not work with the Raw Url Converter!
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Nächste

Zurück zu phpBB2 Snippets



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste

cron