Reference: IGForum (Folder Index)

Purpose

Contains all files used by the In-Game Forum.

Files

Category (Subfolder)
Post (Subfolder)
Thread (Subfolder)
IGFSession.txt

Category

This folder holds all category definitions. Multiple definitions are stored in a single file (a page). Each page only holds a certain range of IDs. The page is calculated by dividing the category ID by the number of category IDs per page (64). Page files begin counting at 00000000.txt.

File Format

INI Format. Each line has a key=value pair.
Comment character: semicolon (;)
Each element has its own [ENTRY] block.

Entry Properties

[ENTRY] Begins a new object.
ID Integer. Object ID. Must be unique.
Title String. Object title.
ParentCategory Integer. Category ID of the parent category. This was originally intended to allow subsections, but wasn't developed.
Locked Bool. If set to 1, new threads cannot be created.
Flags Unsigned Integer. This property was implemented after some others, but only one option actually has a purpose.

1 : Locked (not implemented, see Locked property instead
2 : Stickied (not implemented for categories)
4 : Sort threads alphabetically instead of by last update time.

LastUpdateTime Unsigned Long. Minutes since the operating system epoch when the category was last updated. Taking the offset between this and the current time determines how long ago it was updated.
ThreadList Integer list, separated by commas. Each is a Thread ID. This property may appear on multiple lines. More IDs will be added to the list. Autosave output defaults to 10 IDs per line.

Thread

This folder holds all thread definitions. Multiple definitions are stored in a single file, but if there are too many they will be spread out into additional files. Files begin counting at 00000000.txt.

File Format

INI Format. Each line has a key=value pair.
Comment character: semicolon (;)
Each element has its own [ENTRY] block.

Entry Properties

[ENTRY] Begins a new object.
ID Integer. Object ID. Must be unique.
Title String. Object title.
CreationAccount Integer. Account ID of the player who created the thread.
CreationTime String. Human readable string of the thread creation time, based on the server's local date/time. This may be blank since through most of the server operation, the value was never set. It wasn't used in any calculations and wasn't a visible piece of data, so it was ignored.
CreatorName String. Character name of the player who created the thread.
ParentCategory Integer. Category ID that the thread belongs to.
Locked Bool. If set to 1, new posts cannot be created.
Stickied Bool. If set to 1, this thread will always appear at the top of the list of returned results.
Flags Unsigned Integer. This property was implemented with the intention of getting rid of the separate properties for Locked and Sticked, but never completed since it was working just fine as it was. So only one of the flags actually works.

1 : Locked (not implemented, see Locked property instead
2 : Stickied (see Stickied property instead)
4 : Sort threads alphabetically instead of by last update time.

LastUpdateTime Unsigned Long. Minutes since the operating system epoch when the category was last updated. Taking the offset between this and the current time determines how long ago it was updated.
PostList Integer list, separated by commas. Each is a Post ID. This property may appear on multiple lines. More IDs will be added to the list. Autosave output defaults to 10 IDs per line.

IGFSession.txt

Stores basic information between sessions, used by the IGF system itself.

INI format. Each line has a key=value pair.
Comment character: semicolon (;)

NextCategoryID Integer. Newly created categories will begin counting at this ID. If the ID somehow already exists, it may cause data problems.
NextThreadID Integer. Newly created threads will begin counting at this ID. If the ID somehow already exists, it may cause data problems.
NextPostID Integer. Newly created posts will begin counting at this ID. If the ID somehow already exists, it may cause data problems.
PlatformLaunchMinute Unsigned Long. Minutes since the operating system epoch when the IGF system was launched for the very first time. Used as a base time offset if messages are somehow lacking a time value.