Mostrar posts de phpBB en una pagina externa

phpBBAlgunas veces queremos mostrar el contenido del post de phpBB en una pagina externa (fuera del foro) pero suele ser frustrante estudiar y utilizar el código de phpBB para extraer (inclusive) un texto simple, las medidas de seguridad contra el SPAM hacen que el código tenga niveles de complejidad difíciles de comprender.

Después de algunas horas estudiando el codigo y algunos tutoriales publicados sobre como extraer entradas del foro, estoy logrando migrar todos los artículos a phpBB de tal forma que va a ser mucho mas facil para los miembros de Latindevelopers publicar sus propios artículos.

Desistí de usar phpBB CMS Mod por que aun no esta listo y complicaría la migración, me parece mas como usar phpBB, lo único que me preocupa es que aparezcan algunos agujeros en la seguridad de phpBB, pero ya me ha pasado y no creo que sea gran cosa.

Aqui comparto el código para poder mostrar un post de phpBB fuera del foro, pero no esta todo el codigo, deben leer el articulo antes de usar el siguiente codigo, hice algunas modificaciones:

$posts_ary = array(
        'SELECT'    => 'p.*, t.*, u.username,
                         u.user_colour, p.bbcode_bitfield ',
        'FROM'      => array(
            POSTS_TABLE     => 'p',
        ),
        'LEFT_JOIN' => array(
            array(
                'FROM'  => array(USERS_TABLE => 'u'),
                'ON'    => 'u.user_id = p.poster_id'
            ),
            array(
                'FROM'  => array(TOPICS_TABLE => 't'),
                'ON'    => 'p.topic_id = t.topic_id'
            ),
        ),
        'WHERE'     =>  'p.post_id = ' . $post_id_article ,
        'ORDER_BY'  => 'p.post_id DESC',
    );

$sql = 'SELECT *
    FROM ' . ATTACHMENTS_TABLE . '
    WHERE post_msg_id = '.$post_id_article.'
            AND in_message = 0
    ORDER BY filetime DESC, post_msg_id ASC';
$result = $db->sql_query($sql);
$attachments = array();
while ($row = $db->sql_fetchrow($result))
{
    $attachments[$post_id_article][] = $row;
}

$db->sql_freeresult($result);

$posts = $db->sql_build_query('SELECT', $posts_ary);
$search_limit = 1;
$posts_result = $db->sql_query_limit($posts, $search_limit);

if($posts_row = $db->sql_fetchrow($posts_result))
{
    $topic_title = $posts_row['topic_title'];
    $post_author = get_username_string('full',
                      $posts_row['poster_id'],
                      $posts_row['username'],
                      $posts_row['user_colour']);
    $post_date = $user->format_date($posts_row['post_time']);
    $post_link = append_sid("{$phpbb_root_path}viewtopic.$phpEx",
                  'f=' .$posts_row['forum_id'] .
                  '&t=' . $posts_row['topic_id'] .
                  '&p=' . $posts_row['post_id']) . '#p' .
                   $posts_row['post_id'];
    $bbcode_bitfield = $posts_row['bbcode_bitfield'];

    $post_text = nl2br($posts_row['post_text']);

    $bbcode = new bbcode(base64_encode($bbcode_bitfield));
    $bbcode->bbcode_second_pass($post_text,
                                $posts_row['bbcode_uid'],
                                $posts_row['bbcode_bitfield']);

    $post_text = smiley_text($post_text);

    parse_attachments($forum_id,
                        $post_text,$attachments[$post_id_article],
                        $update_count);

    echo $topic_title."
"; echo $post_text; }

Al ejecutar el código podran ver la entrada, pero tambien tienen que copiar los estilos relacionados con el tema que estan usando, incluso los archivos javascript.

CMS based on phpBB posts