[HILFE] Reparse BBcodes

Hier findet Ihr Modifikationen (MODs) für phpBB3 Olympus (3.0.x)
Forumsregeln
Support für die MODs findet Ihr auf http://www.phpbb.de
Bereich: phpBB 3.0: MOD Support
Benutzeravatar
Dr.Death
Site Admin
Site Admin
Beiträge: 1950
Registriert: 05.02.2005 15:41
Wohnort: Xanten
Kontaktdaten:

[HILFE] Reparse BBcodes

Beitrag von Dr.Death » 22.09.2008 07:38

MOD Name: Reparse BBcodes
Author: EXreaction
MOD Beschreibung: BBCodes werden neu berechnet.

Quelle: http://startrekguide.com/community/view ... 648#p47648


Problem:
In phpBB2 hattest Du spezielle BBCodes installiert welche aber nach einer Konvertierung in phpBB3 nicht mehr funktionieren.

Lösung:
Der beste Weg ist die BBCodes aus dem alten phpBB2 Forum vor der Konvertierung in das phpBB3 Forum zu übernehmen.
Während der Konvertierung werden dann die BBcodes neu berechnet und umgesetzt.

Solltest Du das vorher nicht gemacht haben, so kann Dir das folgende Script dabei helfen.
Bevor Du das u.a. Script startest musst du die alten BBCodes in Deinem phpBB3 Forum hinzufügen ( Benutzerdefinierte BBCodes ).
Das Script wird dann alle vorhandenen Beiträge prüfen und die gefundenen BBCodes erneut berechnen.

Achtung:
Je nach größe Deines Forums kann dies einige Zeit dauern.
Entferne das Script unbedingt nachdem es komplett durchgelaufen ist !

  • Mache als erstes ein Datenbank Backup!
  • Erstelle eine neue php Datei mit u.a. Inhalt.
  • Speicher die neue php Datei unter folgendem Namen: resync_bbcode.php
  • Lade die Datei in Deinen Forums Root hoch ( dort wo auch die memberlist.php liegt )
  • Führe das Script durch Aufruf mit Deinem Browser aus.
Spoiler: BBCODE_SP_AN

Code: Alles auswählen

<?php
/**
* The file must be named resync_bbcode.php
*/

define('IN_PHPBB', true);
$phpbb_root_path = ((isset($phpbb_root_path)) ? $phpbb_root_path : './');
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('posting');

$start = intval(request_var('start', 0));
$limit = 200;

include($phpbb_root_path . 'includes/message_parser.' . $phpEx);

$bbcode_status    = ($config['allow_bbcode']) ? true : false;
$img_status        = ($bbcode_status) ? true : false;
$flash_status    = ($bbcode_status && $config['allow_post_flash']) ? true : false;

$sql = 'SELECT * FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t
    WHERE t.topic_id = p.topic_id
        ORDER BY p.post_id ASC
            LIMIT ' . $start . ', ' . $limit;
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
    decode_message($row['post_text'], $row['bbcode_uid']);

    $message_parser = new parse_message();
    $message_parser->message = str_replace('"', '"', html_entity_decode($row['post_text']));
    $message_parser->parse((($bbcode_status) ? $row['enable_bbcode'] : false), (($config['allow_post_links']) ? $row['enable_magic_url'] : false), $row['enable_smilies'], $img_status, $flash_status, true, $config['allow_post_links']);

    if ($row['poll_title'] && $row['post_id'] == $row['topic_first_post_id'])
    {
        $row['poll_option_text'] = '';
        $sql = 'SELECT * FROM ' . POLL_OPTIONS_TABLE . ' WHERE topic_id = ' . $row['topic_id'];
        $result2 = $db->sql_query($sql);
        while ($row2 = $db->sql_fetchrow($result2))
        {
            $row['poll_option_text'] .= $row2['poll_option_text'] . "n";
        }
        $db->sql_freeresult($result2);

        $poll = array(
            'poll_title'        => $row['poll_title'],
            'poll_length'        => $row['poll_length'],
            'poll_max_options'    => $row['poll_max_options'],
            'poll_option_text'    => $row['poll_option_text'],
            'poll_start'        => $row['poll_start'],
            'poll_last_vote'    => $row['poll_last_vote'],
            'poll_vote_change'    => $row['poll_vote_change'],
            'enable_bbcode'        => $row['enable_bbcode'],
            'enable_urls'        => $row['enable_magic_url'],
            'enable_smilies'    => $row['enable_smilies'],
            'img_status'        => $img_status
        );

        $message_parser->parse_poll($poll);
    }

    $sql_data = array(
        'post_text'            => $message_parser->message,
        'post_checksum'        => md5($message_parser->message),
        'bbcode_bitfield'    => $message_parser->bbcode_bitfield,
        'bbcode_uid'        => $message_parser->bbcode_uid,
    );

    $sql = 'UPDATE ' . POSTS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_data) . '
        WHERE post_id = ' . $row['post_id'];
    $db->sql_query($sql);

    if ($row['poll_title'] && $row['post_id'] == $row['topic_first_post_id'])
    {
        $sql_data = array(
            'poll_title'        => str_replace($row['bbcode_uid'], $message_parser->bbcode_uid, $poll['poll_title']),
        );

        $sql = 'UPDATE ' . TOPICS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_data) . '
            WHERE topic_id = ' . $row['topic_id'];
        $db->sql_query($sql);

        $sql = 'SELECT * FROM ' . POLL_OPTIONS_TABLE . ' WHERE topic_id = ' . $row['topic_id'];
        $result2 = $db->sql_query($sql);
        while ($row2 = $db->sql_fetchrow($result2))
        {
            $sql_data = array(
                'poll_option_text'        => str_replace($row['bbcode_uid'], $message_parser->bbcode_uid, $row2['poll_option_text']),
            );

            $sql = 'UPDATE ' . POLL_OPTIONS_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_data) . '
                WHERE topic_id = ' . $row['topic_id'] . '
                AND poll_option_id = ' . $row2['poll_option_id'];
            $db->sql_query($sql);
        }
    }
}

$sql = 'SELECT count(post_id) as post_cnt FROM ' . POSTS_TABLE;
$result = $db->sql_query($sql);
$cnt = $db->sql_fetchrow($result);

if ($cnt['post_cnt'] > ($start + $limit))
{
    meta_refresh(1, './resync_bbcode.' . $phpEx . '?start=' . ($start + $limit));
    trigger_error('The script is not finished yet, please wait.  Part ' . (($start + $limit) / $limit) . ' of ' . intval($cnt['post_cnt'] / $limit) . ' is finished.');
}
else
{
    trigger_error('Finished!');
}

?>
Source -
Doc. :schein:

Werbung wird nicht durch www.lpi-clan.de bereitgestellt, sondern durch Google. Besucher dieser Links werden gebeten sorgfaeltig mit den angebotenen Produkten/Seiten umzugehen.
 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast