Creative Commons License
This content is licensed under Creative Commons

Larus Board 0.8 :: Documentation


Hinweis an Deutsche Nutzer
Aktuell befindet sich das "Larus Board" noch in Entwicklung und steht nur in Englisch zur Verfügung. Im Laufe der Zeit, bevor die finale 1.0 fertiggestellt sein wird, erfolgt eine komplette Übersetzung auf Deutsch.
^- What is it?
"Larus Board" ("LB" in short) is a lightweight flat-style discussion board. Its name is derived from "larus argentatus" which is a herring gull, you can see as logo. We photographed some during a vacation and decided to use its name for this piece of software.
^- What can it do?
It is the most, best advanced discussion board in the world. Amazingly fast, very secure and easier to use. You feel no barriers or will ever experience any problem. We *use* sophisticated "technologies" to blahblahblah, rule the world, bring peace to everybody, let the sun always shine and so on. Well, we run out of colorful marketing phrases here and we do not want to bore you anymore. So, let us stick to the facts instead :)
  • User accounts with minimal required set of personal data
  • Every user is attached to a usergroup each having specific permissions
  • Some users can moderate the board (edit, delete, close or approve postings)
  • Guests (user without account) can register themselves
  • Unlike other boards LB has no categories, but uses tags provided by users instead
  • If a posting is edited, his history is kept and can be seen on next edit
  • All postings can be fetched by RSS into popular newsfeeder
  • Any posting can be rated. Good one become green, others red.
  • Some little things you may find useful and do not bloat the software
Well, to be honest and use buzzwords either, two common baselines do exist: privacy and security. LB stores very little amount of personal data by default. And in fact it does not allow or implement some features others do in order to enhance security. The downside, of course, is a lower (conservative) featureset.
^- What does it need to run?
  • A http server. Well tested are apache and lighttpd, others should work, too.
  • PHP (yes, blame us :D). It requires at least version 5.2 and the modules pcre, filter, session, date and pdo. These should be available on common installations. zlib is optional for on-the-fly compression of web pages.
  • A database. You can select between MySQL or PostgreSQL. MySQL must be at least version 4.1 as character encoding for unicode is required. We do not know the exact minimum version for PostgreSQL; development is done on 8.2. We think anything about 7.x or above should be fine. Maybe an experienced postgres-user knows more?
  • A browser understanding recent web standards like XHTML/CSS and Unicode (UTF-8). Do not bug us with "ancient" software.
^- How is development going on?
Please note that this software is still in alpha phase. It contains many undocumented bugs and issues; some may lead to data corruption. The database layout it not finished and internal structures may (heavily) change. You should not use it in production environment! For the moment, only experienced users should give it a try. Do not expect to have an update path until final release is ready!
^- Things to be done until final release...
  • Usability. The UI is not very intuitive at the moment. What about blind users?
  • Finalize the caching algorithms, especially in conjunction with Smarty.
  • Package documentation for developers, parsed by PHPDocumentor
  • Import code base to subversion repository
  • Translation to other languages (at least german)
  • Convertors from other BBs (at least phpBB2/3)
  • Evaluate supporting SQLite as third database vendor
  • Carefully implement neccessary bugs to keep development alive *haha*
MSIE Gecko Webkit Opera Other
6.x 7.x 8.x Firefox
1.x
Firefox
2.x
Firefox
3.x
Safari
3.x
Safari
4.x
Chrome 7.x 8.x 9.x Konqueror 4 Mobiles
O + ? ? ++ ++ ++ ? ++ - + + + ?
  1.     Untested
  2.     Unusable
  3.     Basic support
  4.     Few glitches
  5.     No complaints
^- List of features may be included some day...
The following features may be implemented by future versions. They are not(!) scheduled for the first final release.
  • Simple Spam Protection (akismet, add ip to .htaccess as "deny", spamd loopthrough etc.)
  • Notification on Update (scheduled task and mail to admin? fetch from a repository by http as autoupdate?)
  • Announcements (shown on index page, probably a simple editable file is enough?)
  • Interface for receiving messages other than common UI (probably by e-mail or xml?)
  • Digitally signed e-mails (gnupg extension in php or local gpg binary)
  • Print View (could be done by one http-get param and special css)
  • PDF Export (hmm, good free php library needed...)
  • Searchengine-friendly URIs (really use mod_rewrite only?)
  • SQL Phrase Index ("Sphinx") (full-text index search)
^- Things, we will not include...
These features will most likely not be included. If you like to have them, code yourself or use another software. Our philosophy is to keep LB simple and provide a minimal and useful set of features.
  • Full Blog API like MoveableType or other (LB is not a weblog!)
  • Bloated User Profile (LB is no social network!)
  • User Avatar (makes only sense if always the same - some user change them like underwear)
  • File Upload (security implications like malware, virus-scan-dos, buffer overflows on clients etc.)
  • Private Message (not in focus, use external software)
  • Survey (either not in focus, use external software)
  • Extensive Statistics (possible privacy violations, use external software)
  • "Users Online" Page (privacy violations)
  • Threaded View (old school usenet users will hate us)
  • Automatic Database Backup (use external software)
  • IP Banning, allow/deny specific addresses (should be done in webserver or packet filtering)
  • E-Mail Banning, allow/deny specific addresses (what do you expect of this?)
  • News System (use a subject prefix like "News" and you have it)
  • Chat (please use specialised software for that as "browser chats" are inefficient even when using AJAX)
^- Installation
  • You have to copy three folders to your webspace. How you do that does not matter; use a FTP-Client, a SSH/SFTP connection or a local terminal, if you have one. These are "setup", "lb_private" and "lb_public". The first one is only needed during installation, updating, converting from other software or repairing an existing installation. Both "lb´s" are permanent. They can be handled independently or stay together in a folder. "lb_public" contains all data LB needs to be publicy available to everyone. It should be copied to a new folder in your webspace tree like "forum". "lb_private" in contrast should not be available in public webspace. You can copy it anywhere you want. If you are not familiar with software setup, you should keep it together with "lb_public" in one folder. But please protect "lb_private" by password or access control in this case.

    Experts only: In fact any folder or file in "lb_public" can be relocated later on. You can specify those folders in forum´s configuration and include them to your existing website folder layout.

  • One folder and a file need write permissions. These are "cache" and "config.db.php" both located in the private folder. Depending on the server operating system, different steps are required. Please consult the system manual on file permissions. UNIX-based systems like Linux or BSD do a "chmod". Many FTP-Clients are also aware of that.
  • After you copied all data, you should point to the "setup" folder in your browser. It will check for dependencies, ask for your database account data and then performs the requested action.
  • When redirected to your fresh installed forum, you should login with your executive account and setup your configuration. Look out for colored buttons on the left side. Try the red one :)
  • If anything works correct, we strongly advise you to remove the "setup" folder from your public webspace or make it at least inaccessible! Otherwise anyone could play around and have some fun...
^- Upgrade
Upgrading is not neccessary right now as stable release is not finished yet...
^- Convert
During development some convertors should be available. Please submit your suggestions...

Currently two basic implementations for converting phpBB2 and phpBB3 are available. They convert users and posts, not more.
^- License
Copyright (c) 2008, The Larus Board Team. All rights reserved.
This software is "Free Software" as defined by the Free Software Foundation. Some code is foreign work not belonging to "The Larus Board Team" having their own licenses as noted in the following listing:
  • /lb_public/gfx/ext/closed.png: Padlock SSL/TLS Icon (licensed under MPL/GPL/LGPL)
    Taken from Mozilla Firefox, just scaled it and made the background transparent.
  • /lb_public/gfx/ext/rss.png: SVG-Icon (licensed under MPL/GPL/LGPL)
    Resized the svg downloaded from the named webpage.
  • /lb_public/js/ext/overlib: overlib Library (licensed under Artistic License)
  • /lb_public/js/ext/sha1.js: Implementation of SHA1 (licensed under BSD License)
  • /lb_private/ext/Smarty: Smarty Template Engine (licensed under LPGL 2.1)
  • /lb_private/ext/Text_Diff: Textdiff Library from PEAR (licensed under LGPL)
    Only modified the (include-)paths as it´s stripped out of PEAR infrastructure.
  • /lb_private/ext/xajax: xajax Library (licensed under BSD license)
^- Credits
  • Saturas
    Founder, Lead Programmer and Project Administrator
  • dustdevil81
    Programmer and Testing
^- Frequently Asked Questions and Answers (FAQ)
How do I get all privileges?
On setup your user account is assigned to the group "Executive". This group is responsible for any technical administration of the forum. Members of the group "Moderator" have the job to moderate any postings that were submitted. If you want to have both privileges, you should go to "My Profile" after login with your user account and change your group to "Super-User".

Sometimes I see content not being updated?
LB performs caching to store final pages after creation. This can be disabled in configuration, but is not recommended. It is used to reduce server load and make pages load faster in browser window. Some areas are refreshed regularly by time (one hour in common) and not when it should be refreshed.
  • Home: "Most popular tags" are rebuilt after one hour
  • Home: "Topics by month" are rebuilt by scheduled task every day
  • Search: Results have an ID and are cached for thirty minutes
  • Moderation Panel: Complete page is refreshed every ten minutes
  • Executive Panel: Statistics are cached for thirty minutes and "pending requests" for ten minutes.
If nothing helps, you can delete files from your cache folder. They are automatically rebuilt.

Why do you support multiple database software?
Well, our main focus lies on PostgreSQL as it supports more features than MySQL (5.x). We do not want to go into details here, but PostgreSQL does more work on data integrity and safety. MySQL has basic support as it is widely used and offered by hosting providers.

Why are you using Unicode (UTF-8)?
By using Unicode we can implement other languages easier. Usually every has its own glyphs and sharing only a minimal subset, like (arabic) numbers. They all are included in Unicode (UTF-8) and need no (error prone) charset transformations from one language to another.

From which forum software can I convert?
Currently, during developing phase, there is no final support. At least for phpBB we will provide one. If you would like to have another, don't hesitate to contact us. Any convertor will transform only user accounts and postings to "Larus Board". Other features supported by the origin software will be lost. All passwords will become invalid and must be rebuilt afterwards.

How should I backup my forum database?
Please use tools your database vendor ships. Usually a restore tool is also provided. In case of MySQL you can use "mysqldump" or different methods on PostgreSQL. If you prefer webbased solutions or have no access to those tools on your server, you may give PHPMyAdmin (MySQL) a try or PHPPgAdmin (PostgreSQL). Often they are preinstalled by your hosting provider.

Can I switch the database software after installation?
Yes, you can. If you manage to transfer your data. This is not that easy and exceeds the coverage of this documentation. Experienced users should be able to do this job, others should ask.

I submitted a posting, but it is not listed on home?
Yes, this is indeed confusing when you have your first minutes with LB. Actually only public postings are listed on "home". Obviously not enlisted are hidden postings. They can be approved by moderators. Additionally postings may have access control rules. Only if these are empty, a posting will be included in the list. Any unlisted posting can still be found by searching for them or let them "list as request" in moderation or executive panel.

What does "Imprint and Privacy Statement" mean on the footer?
In your language folder you can create a "legal.txt". There you can write down your imprint (who manages the forum etc.) and privacy terms (what data you collect and using them). Please note that each country has their own interpretation of this. Some do not require it, others do as Germany. If you have any doubts, consult your local lawyer or ask in forums which cover such questions.

Do you have a list of supported formatting in posting messages?
Sure, we have. Like other forum software you can format the messages by using "bbcode". These are common on most software and we use the same syntax. Basically, you use "tags" telling the message parser to transform them. Some tags require a begin and an end tag, others do not.
  • [b]...[/b] - Makes a text between the tags bold
  • [i]...[/i] - Makes a text between the tags in italics
  • [u]...[/u] - Makes a text between the tags underline
  • [s]...[/s] - Makes a text between the tags strikethrough
  • [quote]...[/quote] - Defines a quoted message
  • [ul]...[/ul] - Defines a listing (not "bbcode" compatible)
  • [li]...[/li] - Inserts an item into the listing (not "bbcode" compatible)
  • [notice]...[/notice] - Emphasizes a paragraph. Can only be used by moderators or executives (not "bbcode" compatible)
  • [url=xxx] - Includes an URI to external resource. Allowed schemes are "http,https,ftp,ftps".
  • [img=xxx] - Includes an external image. Scheme limitation applies here, too.
  • [embed=xxx] - The same as "img", but embeds the content. Useful on any content needing browser plugins (not "bbcode" compatible)
  • [mail=xxx] - Includes an e-mail address as "mailto" link
  • [link=xxx] - Links to a posting (numeric) or a local "anchor" (alphanumeric) in message (not "bbcode" compatible)
  • [anchor=xxx] - Sets a anchor to jump to like "<a name="foobar"></a>" in HTML (not "bbcode" compatible)
  • [format=xxx]...[/format] - This tag can set multiple formatting arguments, some as key-value-pair. "xxx" is to be replaced by a string and multiple args must be separated by a comma. Pairs are assigned with "key:pair". Here we have an example: "b,s,color:#f00,inline" (not "bbcode" compatible)
    b - makes bold
    i - makes italics
    u - makes underline
    s - makes strikethrough
    inline - shows the element "inline" not as paragraph
    color:xxx - Sets text color. Allowed are names or hexadecimal like "#f00"
    bgcolor:xxx - Sets the background color. Values are the same to "color"
    size:xxx - Sets font size. Allowed are any values used in css definition (em, px ,pt , % and so on)
    class:xxx - Uses a predefined classification located in stylesheet. Must be alone and the prefix for css class is "xf_tp_usercss__".
I am a developer. What are important methods?
Well, you should know how to fetch internal variables, process user inputs, query the database and perform asynchronous requests.
  • XFCache::(get|put|purge) - gets, puts or purges content from cache
  • XFCache::topic - topic cache, containing meta data
  • XF::date - format timestamps for human readable output
  • XF::file_handler - allows to read, write and delete files
  • XF::get_(cfg|group|user) - gets a configuration value, user or group data
  • XF::link - parses a link for use in browser or redirections
  • XF::logger - drops a message in logging system
  • XF::sanitize_var - process user inputs by several rules
  • XF::sql_query - do a query on sql database
  • XF::tan - receive a transaction number for user request
  • XF::vault_query - store or fetch common variables
  • XFUI::html_(head|foot|redirect) - hmm, what do you think? :)
  • XFUI::ajax_init - inits the asynchronous requests, must be called before html_head()
  • XFUI::lang_str - translates a string to requested/current language
I am a developer. What functions are used in templates?
First of all, for a detailed documentation on our template engine, have a look at Smarty Documentation. Usually variables are assigned to templates by php script. Although users may disable caching, please test your extensions with caching. All contents are cached, except "inserts" located in "insert_xfi()". Use them for any live content that should be freshly inserted every page request.
  • Fetch Variables - inserts NAME in template. Must be assigned in php script by XF::$tpl->assign().
    {insert name='xfi' class='var' var='NAME' [ escape=[0|1] ]}
  • Date - parses an integer timestamp to user readable output. FORMAT syntax can be found on strftime(), readable makes "Today, xx:yy" instead of full date.
    {insert name='xfi' class='date' ts='TIMESTAMP' [ format='FORMAT' readable=[0|1] now=[0|1] ]}
  • Translate String - get NAME from translation table and insert the result.
    {insert name='xfi' class='i18n' var='NAME' [ lang='LANGUAGE' ]}
  • Link - parse a link. Set ACTION to execute. Append any further arguments as key-value-pair.
    {insert name='xfi' class='link' action='ACTION' [ ... ]}
^- We are currently looking for...
  • Designer/Usability: Someone experienced in doing usable(!) decent UI using AJAX
  • Graphics: We also need some nice graphics, maybe a complete new default style
  • Database Engineer: Probably someone knowing PostgreSQL very good
  • Volunteers: Lots of brave people testing this software :D
^- History and Future Roadmap
  • 1.0.0 (stable, In The Future)
    Happy Days and Jubilation ;)
  • 0.9.0 (beta, In The Future)
    Now feature frozen, bugfixing only...
  • 0.8.0 (alpha, July 2008) -- CURRENT
    Stabilization and completed featureset
  • 0.7.0 (alpha, February 2008)
    PostgreSQL Port, UI except Control Panels
  • 0.6.0 (pre-alpha, Winter 2007)
    Usuable OO-Framework, Basic Functions
  • 0.5.0 (pre-alpha, Autumn 2007)
    Basic Framework and Database Layout
  • 0.1.0 (planning, Summer 2007)
    Initial Idea, Basic Concept