server, $this->user, $this->password); * * to this: * * @mysql_connect($this->server, $this->user, $this->password, true); * ****************************************************************************/ /*************************************************************************** * SETUP ****************************************************************************/ // phorum.org database $phorum_dbname = ""; $phorum_dbhost = ""; $phorum_dbuser = ""; $phorum_dbpasswd = ""; $phorum_forums_table = "forums"; /* =================================================================== */ define('IN_PHPBB', 1); $phpbb_root_path = './'; include($phpbb_root_path . 'extension.inc'); include($phpbb_root_path . 'config.'.$phpEx); include($phpbb_root_path . 'includes/constants.'.$phpEx); include($phpbb_root_path . 'includes/functions.'.$phpEx); include($phpbb_root_path . 'includes/functions_admin.'.$phpEx); include($phpbb_root_path . 'includes/functions_post.'.$phpEx); include($phpbb_root_path . 'includes/functions_search.'.$phpEx); include($phpbb_root_path . 'includes/db.'.$phpEx); $phorum_db = new sql_db($phorum_dbhost, $phorum_dbuser, $phorum_dbpasswd, $phorum_dbname, false); set_time_limit(0); /************************************************************************** * from admin/admin_forums.php **************************************************************************/ $forum_auth_ary = array( "auth_view" => AUTH_ALL, "auth_read" => AUTH_ALL, "auth_post" => AUTH_ALL, "auth_reply" => AUTH_ALL, "auth_edit" => AUTH_REG, "auth_delete" => AUTH_REG, "auth_sticky" => AUTH_REG, "auth_announce" => AUTH_MOD, "auth_vote" => AUTH_REG, "auth_pollcreate" => AUTH_REG ); function convert( $a_string = '' ) { $a_string = preg_replace( '#[\\\]+#', '\\', $a_string ); $a_string = str_replace('\\\'', '\'', $a_string); $a_string = str_replace('\\', '\\\\', $a_string); $a_string = str_replace('\'', '\\\'', $a_string); $a_string = trim( $a_string ); return $a_string; } echo "
Starting the import...\n";

/**************************************************************************
 * copied from admin/admin_forums.php
 **************************************************************************/
$sql = "SELECT MAX(cat_order) AS max_order FROM " . CATEGORIES_TABLE;
if( !$result = $db->sql_query($sql) )
{
    echo "Can't get max cat_order from " . CATEGORIES_TABLE . " table ($sql";
    exit;
}

$row = $db->sql_fetchrow($result);

$max_order = $row['max_order'];
$next_order = $max_order + 10;

$sql = "INSERT INTO " . CATEGORIES_TABLE . " (cat_title, cat_order) VALUES ('Imported from Phorums', $next_order)";
if( !$result = $db->sql_query($sql) )
{
    echo "Couldn't insert row in categories table '$sql'";
    exit;
}

$cat_id = $db->sql_nextid();

echo "New category 'Imported from Phorums', ID: $cat_id\n";

$sql= "SELECT id,name,description,table_name FROM $phorum_forums_table WHERE parent=0 order by id";
if ( !($result = $phorum_db->sql_query($sql)) )
{
    echo "Could not get list of forums in phorum db ($sql)";
    exit;
}

if ( $row = $db->sql_fetchrow($result) )
{
    do
    {
        $tablename = $row['table_name'];
        $forumname = $row['name'];
        $forumdesc = $row['description'];

        $result_tmp = $phorum_db->sql_query( "SELECT COUNT(id) as forum_posts FROM $tablename");
        $forum_posts = $phorum_db->sql_fetchfield('forum_posts');
	if ( $forum_posts == '' ) { $forum_posts = 0; }

        $result_tmp = $phorum_db->sql_query( "SELECT COUNT(id) as forum_topics FROM $tablename WHERE parent=0");
        $forum_topics = $phorum_db->sql_fetchfield('forum_topics');
	if ( $forum_topics == '' ) { $forum_topics = 0; }

        $sql = "SELECT MAX(forum_order) AS max_order FROM " . FORUMS_TABLE . " WHERE cat_id = $cat_id";
        if( !$result_tmp = $db->sql_query($sql) )
        {
            echo "Couldn't get order number from phpBB forums table ($sql)";
            exit;
        }
        $row_tmp = $db->sql_fetchrow($result_tmp);
        
        $max_order = $row_tmp['max_order'];
        $next_order = $max_order + 10;
        
        $sql = "SELECT MAX(forum_id) AS max_id FROM " . FORUMS_TABLE;
        if( !$result_tmp = $db->sql_query($sql) )
        {
            echo "Couldn't get max forum_id forums table ($sql)";
            exit;
        }
        $row_tmp = $db->sql_fetchrow($result_tmp);

        $max_id = $row_tmp['max_id'];
        $next_id = $max_id + 1;

        //
        // Default permissions of public
        //
        $field_sql = "";
        $value_sql = "";
        while( list($field, $value) = each($forum_auth_ary) )
        {
            $field_sql .= ", $field";
            $value_sql .= ", $value";
        }

        $sql = "INSERT INTO " . FORUMS_TABLE . 
               " (forum_id,cat_id,forum_name,forum_desc,forum_order,forum_posts,forum_topics,forum_status, prune_enable $field_sql)" . 
               " VALUES ($next_id,$cat_id, '" . convert( $forumname ) . "', '" . convert( $forumdesc ) . 
                   "', $next_order, $forum_posts, $forum_topics, 0, 0 $value_sql)";

        if( !$result_tmp = $db->sql_query($sql) )
        {
            echo "Couldn't insert row in categories table ($sql)";
            exit;
        }

        $forum_id = $next_id;
        echo "  Added new forum '$forumname', ID: $forum_id\n";

        $sql = "SELECT thread,subject,datestamp FROM $tablename WHERE parent=0";
        if ( !($post_result = $phorum_db->sql_query($sql)) )
        {
            echo "Couldn't select threads from phorum $tablename ($sql)";
            exit;
        }

        if ( $post_row = $phorum_db->sql_fetchrow($post_result) )
        {
            do
            {
                $thread = $post_row['thread'];
                $subject = convert( $post_row['subject'] );
                $ds = $post_row['datestamp'];
                $datestamp = mktime(substr($ds, 11, 2),substr($ds, 14, 2),substr($ds, 17, 2),substr($ds, 5, 2),substr($ds, 8, 2),substr($ds, 0, 4));
                
                $sql = "SELECT COUNT(id) as replies FROM $tablename WHERE thread=$thread AND parent <> 0";
                if( !$result_tmp = $phorum_db->sql_query($sql) )
                {
                    echo "Couldn't get thread count from $tablename where thread=$thread ($sql)";
                    exit;
                }
                $row_tmp = $phorum_db->sql_fetchrow($result_tmp);
                $replies = $row_tmp['replies'];
                unset( $row_tmp );

                $sql = "INSERT INTO " . TOPICS_TABLE . 
                       " (forum_id,topic_title,topic_poster,topic_time,topic_replies) " . 
                       "VALUES ($forum_id, '" .  convert( $subject ) . "', -1, $datestamp, $replies)";

                if( !$result_tmp = $db->sql_query($sql) )
                {
                    echo "Couldn't insert post into " . TOPICS_TABLE . " table phpBB ($sql)";
                    exit;
                }

                $topic_id = $db->sql_nextid();

                echo "    Added new topic '$subject', ID: $topic_id\n";

                $sql = "SELECT " . $tablename . "_bodies.body, subject, author, datestamp FROM ".$tablename." inner join ".$tablename."_bodies on ". 
                       $tablename . ".id = ".$tablename."_bodies.id WHERE ".$tablename.".thread=$thread ORDER BY ".$tablename.".id";

                if ( !($replies_result = $phorum_db->sql_query($sql)) )
                {
                    echo "Couldn't select replies from phorum $tablename ($sql)";
                    exit;
                }
                
                if ( $replies_row = $phorum_db->sql_fetchrow($replies_result) )
                {
                    $topic_first_post_id = 0;
                    $topic_last_post_id  =  0;

                    do
                    {
                        $author = convert( $replies_row['author'] );
                        $author = substr( $author, 0, 24);
                        $sub = convert( $replies_row['subject'] );
                        $body = convert( $replies_row['body'] );

                        $ds = $replies_row['datestamp'];
                        $datestamp= mktime(substr($ds, 11, 2),substr($ds, 14, 2),substr($ds, 17, 2),substr($ds, 5, 2),substr($ds, 8, 2),substr($ds, 0, 4));

                        $sql = "INSERT INTO " . POSTS_TABLE . " (topic_id,forum_id,poster_id,post_time,post_username,enable_bbcode,enable_smilies) " . 
                               "VALUES ($topic_id, $forum_id, -1, $datestamp, '$author', 1, 1)";

                        if( !$result_tmp = $db->sql_query($sql) )
                        {
                            echo "Couldn't insert new post into " . POSTS_TABLE . " table '$sql'";
                            exit;
                        }
                        
                        $post_id = $db->sql_nextid();
                        if ( $topic_first_post_id == 0 ) $topic_first_post_id = $post_id;
                        $topic_last_post_id = $post_id;
                        

                        $sql = "INSERT INTO " . POSTS_TEXT_TABLE . "(post_id,post_subject,post_text) VALUES ($post_id,'$sub','$body')";
                        if( !$result_tmp = $db->sql_query($sql) )
                        {
                            echo "Couldn't insert new post_text into " . POSTS_TEXT_TABLE . "row in categories table '$sql'";
                            exit;
                        }

                        unset( $result_tmp );
                        add_search_words($post_id, stripslashes($body), stripslashes($sub));
        
                        // The database package keeps every sql query statment around.
                        //   this is bad as it will eat up memory until PHP dies
                        // This clears the cache and clears up the memory.
                        unset( $db->last_query_text );
                        unset( $db->row );
                        $db->num_queries = 0;
                        $db->in_transaction = 0;
                        
                        echo "      Added replies '$subject', ID: $post_id\n";
                    }  while( $replies_row = $phorum_db->sql_fetchrow($replies_result) );
                    
                    $sql = "UPDATE " . TOPICS_TABLE . " SET topic_last_post_id=$topic_last_post_id, topic_first_post_id=$topic_first_post_id WHERE topic_id=$topic_id";
                    if( !$result_tmp = $db->sql_query($sql) )
                    {
                        echo "Can't update " . TOPICS_TABLE . " table '$sql'";
                        exit;
                    }

                    echo "      Update topics ID: $topic_id :  $topic_first_post_id - $topic_last_post_id\n";
                }
            }  while( $post_row = $phorum_db->sql_fetchrow($post_result) );
        }
        
        $sql = "UPDATE " . FORUMS_TABLE . " SET forum_last_post_id=$topic_last_post_id WHERE forum_id=$forum_id";
        if( !$result_tmp = $db->sql_query($sql) )
        {
            echo "Can't update " . FORUMS_TABLE . " table '$sql'";
            exit;
        }

    }  while ( $row = $db->sql_fetchrow($result) );

}
else
{
    echo 'No forums in phorum db';
}
?>