Recent Changes
Larus Board Development Site
FAQ 
FAQ

Before using

What skills do I need to use LB?
All Versions In short: download a file, extract a ZIP, read the documentation, upload to your server and fill out a form with your database credentials. Additionally you have to know how to use a browser. But it seems you already do :SMILE:
What scope do these answers cover?
All Versions It provides useful information to the one who installs LB. Your users will have help messages according to their needs when they use it.

First steps

How do I get all privileges?
All Versions 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.
What must I do to allow guests submitting new posts?
All Versions First, guests are assigned to the user group Unregistered and inherit its permissions. By default they are not allowed to submit new postings. You can change this at the Access Control located on the red panel, if you have executive privileges. Select "Submit New Reply" after "Submit New Topic" and allow the mentioned group to access it. Now guests are able to submit new postings which are instantly visible. If you do not want that, disable it on the User Groups"
Sometimes I see content not being updated?
All Versions 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
  • Topic View: Postings are cached for one year before being rebuilt
  • Topic View: The optional navigation bar is valid for one month and is *not* checked for consistency
  • 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. Do this by hand in your filesystem or log in with an user having privileges to access the Cache Manager - usually moderators or executives.
I submitted a posting, but it is not listed on Home?
All Versions 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 means "created no calendar yet" on Home?
All Versions After some time all months will be listed since the first postings was submitted. One of the Scheduled Tasks takes care of it. By these links a quick search for any month is possible.
Sometimes I get old search results and/or wrong links to postings!
All Versions This is because search results are also cached. Every search request gets an unique ID by their parameters and atr stored with the Posting-IDs. Frequently issued search requests have not to be fully performed then. Of course this data becomes obsolete after a while and will be purged by a Scheduled Task. Therefore the current status of any individual posting cannot be taken care of as this would make caching senseless.

Using LB

How does Access Control work?
All Versions First of all, a ruleset is selected by the action an user wants to do. This can be seen in the addressbar of your browser. Usually there is a "lb_main.php?do=xxx..." and xxx is the action, in example "overview" or "acp_acl_list". Rules are assigned to that action and can allow or deny access. Consequently an user who is affected by a rule directly has preference against usergroup rules. You can see the effective permission of an user in their profile (requires executive permissions).
There are weird defaults in access control lists!
All Versions Well, some rules are set on purpose. Let us take the group Member for example. They are denied to login but allowed to logout. Registration is also denied. Again on Super-User which are supposed to have full access privileges. Logged in users really do not have to access that anymore - or should he be able to register or login again?
Have access control lists from Posting Prefix preference against the one assigned to the posting directly?
All Versions Yes, it has.
How can the message filter be configured to detect spam?
>= 1.1.0 Firstly you have to enable it in your Configuration. Please note that the filter only works on specific user groups. To see the affected one, have a look on your User Groups at the executive panel; by default Unregistered and Members. After enabling the filter, we now come to its setup by the corresponding form. Let us check the sources you can use for filtering:
  • User Account (ID): Currently this source is unusable. In the future it will temporarily hold any perculiar user account.
  • IP-Address: The IP-Address of the user can be matched against databases to check whether it attracted attention by spamming some time ago. Usually a nameserver (DNSBL) is queried. There are some out there with different key aspects of their scoring. As a start you can choose the provider Spamhaus by typing their server "sbl.spamhaus.org" into the text field of the configuration form.
  • Posting Message: The text itself can be examined of course. To do so you can use a program running on the local server or you ask an remote website. In order to recognize spam the forum needs a valid return value from that program. If it required additional parameters, you can specify them. Here are examples (first the "class" before the "params" in quotation marks):
    exec:/usr/bin/spamassassin "-L"
    exec:/usr/bin/spamc "-p 1234"
    sock:rest.akismet.com:80 "key=xxx,verbose=0,class=akismet"
    The first one launches a local instance of Spamassassin (SA). This is a program to detect spam mails, but can fundamentally be fed by any text string. This one returns a score value you can set in the form below. The second order is similar, but faster. "spamc" is a tool of SA for running in the background and waits for requests. If you start SA directly, it has to be loaded completely on each request. The parameters are corresponding to the one accepted by the programs.

    The last order forwards the message to a remote server. At the moment only TCP with the protocol HTTP is possible and the text is encapsulated into a HTTP POST request. Just Akismet can be used for now as provider. To get the permission to use them, you have to get an "API Key" from there first which you enter in the parameter field.

    Both example providers allow to declare messages as spam or ham retroactively. We have not implemented this yet.

What should I do to digitally sign outgoing e-mails?
>= 1.1.0 You have to do this at the mail settings of the Configuration. At the moment there is only one tested and supported program for this purpose: GnuPG which follows the PGP-Specification. In addition you need a key pair for signing. Please consult the GnuPG documentation for instructions how to do this. It is not difficult. Now, just the configuration by the form is missing. Here is an example (first the "class" before the "params" in quotation marks):
exec:/usr/bin/gpg "keyring=/home/xxx/.gnupg,keyid=0x00000000,password=" The parameters should be self-explanatory. A password is not required and will be stored, if used anyway, forum configuration without encryption. Last but not least you have to publish the public key (forums, website or keyserver) so that other people can verify the signature.
I see no image in Statistic on Log View?
All Versions We have two possibilities to display an image here. One is a so called vector image. Modern browser can display them without trouble, some however require a special plugin. If this fails a "normal" bitmap image is created, which requires "gd" as PHP extension. You can check its availablity by running the first installation step again.
How does the Check for Software Update work?
All Versions This link can be found on your Executive Overview. It looks for a new software version than you have installed. Currently this is very simple and not automatic. Only the required information is transferred to our server (a minimal HTTP GET request) and any comparison is done on your webserver. In the future this feature may be extended as long as our users wish that.
What does Imprint and Privacy Statement mean on the footer?
All Versions 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?
All Versions 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. Please replace the round brackets with square brackets, when inserting the tags. We did not do it here, because the blog software will interpret them itself :WINK:
  • (hr) - Makes a horizontal rule to split paragraphs
  • (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)
  • (spoiler)...(/spoiler) - Hides a text against unintentional reading (not "bbcode" compatible, >= 1.2)
  • (url=xxx) - Includes an URI to remote resource. Allowed schemes are "http,https,ftp,ftps".
  • (img=xxx) - Includes an remote 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 "" 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
    block - shows the element as block (default)
    left - put the block to the left
    right - put the block to the right
    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)
    width:xxx - Sets the width of the block. 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__".

Advanced

I changed a value in database but nothing happened?
All Versions Do you have enabled the forum caching settings (as they are by default) in Configuration? A lot of settings are copied to your local cache folder and used, if existing. You should delete the corresponding files from cache. The recent data from database will be fetched then.
What dies a Repair Install do?
All Versions It resets some settings to default values of a first installation. Including all access control lists of default usergroups, the entire configuration, all scheduled tasks, default usergroups and posting prefixes. Custom usergroups and their access control lists remain untouched. You will have to configure your forum again afterwards. It can be started like a normal installation as the software detects the repair request by itself.
How should I backup my forum database?
All Versions 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?
All Versions 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.
Is there a way to be always up to date with LB?
All Versions Yes, but you need some tools and a bit time to get familiar into "software versioning". Our bleeding edge source code and releases are stored in our "Subversion Repository". This is a piece of software helping us to track changes in LB.
  • You can view the SVN-Repository by using your browser or get a tool to use the voodoo of Subversion directly. Either you can use command line tools available on common used platforms or graphical interfaces. On Microsoft Windows you can try TortoiseSVN which installs a SVN client in your explorer context menu. On Linux you can use RapidSVN or "kdesvn". Both should be available on your distrubution software repository (synaptic, yum, aptitude, zypper etc.).
  • Then you must decide, whether you want to use the latest code and sometimes have the risk to get broken software. But the advantage of getting patches real fast. Otherwise you can choose one of our releases and hop from one to another. Both paths are found in the Repository-URL. You can access them by HTTP or SVN-Protocol.
  • The latest source code can be found in the "trunk":
    http://svn.savannah.nongnu.org/svn/larusboard/trunk
    svn://svn.savannah.nongnu.org/larusboard/trunk
  • Recent source code of our stable versions are located in the "branches":
    http://svn.savannah.nongnu.org/svn/larusboard/branches/STABLE-x_x
    svn://svn.savannah.nongnu.org/larusboard/branches/STABLE-x_x
  • Release packages which are also available for download can be found in:
    http://svn.savannah.nongnu.org/svn/larusboard/tags/release-x.x.x
    svn://svn.savannah.nongnu.org/larusboard/tags/release-x.x.x
    Where "x.x.x" must be replaced by the version number you would like to have. These are safe versions as opposed to the trunk or branches. Those can contain broken code as well and are not recommended to common end-user.
  • As soon as you have decided for one URL, you must get a copy from the repository - called a "checkout". On a graphical interface this is very comfortable. Just search the option "Checkout" and give the URL and your local folder for the copy. That should be all. Some programs require to open the repository first, before making a copy. When using the command line tool, type: svn co http://svn.savannah.nongnu.org/svn/larusboard/trunk /local/path/to/larusboard
  • The last step is to get updates from us. This is simply called "Update" on SVN. It will merge all changes since checkout to your local copy. Again graphical interfaces usually have a button to push. That is all. On command line use: cd /local/path/to/larusboard
    svn update
  • You can also switch from one release to another to do an update very easily. On command line use: cd /local/path/to/larusboard
    svn switch http://svn.savannah.nongnu.org/svn/larusboard/tags/release-x.x.x
    svn update

Technical

What does Debug Mode mean?
All Versions This is a special mode usually enabled for developers. They use it to look inside the software as it runs. Common users can live without it and should disable it. Just open the "class.root.php" in the "private folder" and adjust the "const DEBUG = xxx" line.
Are any information stored encrypted?
All Versions Yes, there are some. First of all: Data in filesystem or database is unencrypted, as this is a matter of your filesystem. Consult your operating system manual or administrator, if you think these are sensitive enough for that. LB however does protect passwords and browser cookies. First one are saved as a hash (some kind of digital fingerprint) in database, never in plain text. They cannot be recovered, if you lost them. Only renewed. As your browser sends passwords or cookies these are protected, too. This is independent whether you use additional secure channels like SSL (HTTPS) or not.
Why do you support multiple database software?
All Versions 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)?
All Versions 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.
I am a developer. What are important methods of the core classes?
All Versions 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?
All Versions 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' [ ... ]}

Misc

Can I help to improve LB?
All Versions Of course! Depending on your skills you can help us with ideas, bug reports or even send us patches. Please use our support pages for that.
I would like to have xyz in LB...
All Versions Please have a look on the page with the recent development. There we list some things already scheduled for implementation or rejected so far. If you do have another feature request, please submit it to our support pages.