npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

nodebb-plugin-import-ubb

v0.1.4

Published

a UBB forum exporter to import-ready files

Downloads

17

Readme

nodebb-plugin-import-ubb

a UBB forum exporter to be required by nodebb-plugin-import.

What is this?

It's just an exporter of UBB Threads data, that provides an API that nodebb-plugin-import can use to exporter source forum data and import it to NodeBB's database. So, it's not really a conventional nodebb-plugin.

Why is it even a NodeBB plugin?

it doesn't really need to be, nor that you can use it within NodeBB it self, but, having this as a plugin have few benefits:

  • a nodebb- namespace, since you can't really use it for anything else
  • it can easily require NodeBB useful tools, currently

Usage within NodeJS only

// you don't have to do this, nodebb-plugin-import will require this plugin and use its api
// but if you want a run a test

var exporter = require('nodebb-plugin-import-ubb');

exporter.testrun({
    dbhost: '127.0.0.1',
    dbport: 3306,
    dbname: 'ubb',
    dbuser: 'user',
    dbpass: 'password',

    tablePrefix: 'ubbt_'
}, function(err, results) {

    /*
        results[0] > config
        results[1] > [usersMap, usersArray]
        results[2] > [categoriesMap, categoriesArray]
        results[3] > [topicsMap, topicsArray]
        results[4] > [postsMap, postsArray]
    */
});

What does it export?

read carefully:

  • ####Users:

    • _username YES. UBB for some reason allows duplicate users with same emails? so the first ones by ID orders will be saved, the rest will be skipped. (UBB appends [username]_dup[Number] next to the dups.. so those will be skipped too if the email is already used)
    • _alternativeUsername YES. as the UBB.User.UserDisplayName, which nodebb-plugin-import will try to use if the username validation fails
    • _password NO. UBB uses MD5, NodeBB uses base64 I think, so can't do, but if you use nodebb-plugin-import it will generate random passwords and hand them to you so can email them.
    • _level (administrator and moderator) YES. Admins will stay Admins, and Moderators will stay Moderators, the catch here though is that each moderator is a moderator on ALL of the categories
    • _joindate YES, UBB uses Seconds, the exported will convert to Milliseconds
    • _website YES. if URL looks valid, it is exported, but it's not checked if 404s
    • _picture YES. if URL looks valid, it is exported, but it's not checked if 404s, if not valid, it's set to "" and NodeBB will generate a gravatar URl for the user
    • _reputation SORT-OF. assumed as the UBB.User.raking
    • _profileviews SORT-OF. assumed as the UBB.User.totalRanks I didn't find anything closer
    • _location YES. migrated as is, clear text
    • _signature YES. migrated as is (HTML -- read the Markdown note below)
    • _banned YES. it will stay banned, by username
    • Oh and UBB have a weird User with ID == 1, DONOTDELETE <= that's like the first user created, and somehow, in my UBB installation, it does own few topics and posts, this one will not be migrated, BUT nodebb-plugin-import will assigned these post to the to the NodeBB initial Admin created.
  • ####Categories (AKA Forums per UBB Speak):

    • _name YES
    • _description YES
  • ####Topics:

    • _cid (or its UBB category aka Forum id) YES (but if its parent Category is skipped, this topic gets skipped)
    • _uid (or its UBB user id) YES (but if its user is skipped, this topic gets skipped)
    • _title YES
    • _content (or the 'parent-post` content of this topic) YES (HTML - read the Markdown Note below)
    • _timestamp YES, UBB uses Seconds, the exporter will convert to Milliseconds
    • _pinned YES (0 or 1) (I don't know how many you can pin in NodeBB)
    • _viewcount YES
  • ####Posts:

    • _pid (or its UBB post id)
    • _tid (or its UBB parent topic id) YES (but if its parent topic is skipped, this post gets skipped)
    • _uid (or its UBB user id) YES (but if its user is skipped, this post is skipped)
    • _content YES (HTML - read the Markdown Note below)
    • _timestamp YES, UBB uses Seconds, the exporter will convert to Milliseconds

UBB Versions tested on:

  • UBB 7.5.7

Markdown note

read nodebb-plugin-import#markdown-note

It's an exporter, why does it have 'import' in its title

To keep the namespacing accurate, this exporter is designed to export data for nodebb-plugin-import only, also for a 1 time use, so why do you care.