====== userprops.js ======
So you're a Synchronet JavaScript module author or modder and you've got some per-user values that you would like to store persistently (in a file). This is where the User Properties (''userprops.js'') library comes to "Save the day"!
This library manages the ''[[dir:data]]/user/*.ini'' files where per-user module-owned property values are stored.
These files are automatically cleaned-up by Synchronet when a user account number is assigned to a new user.
===== Usage =====
The ''userprops.js'' library is a return-style library, meaning it is intended to be used like so:
var userprops = load({}, "userprops.js");
This creates a new library object (called ''userprops'' in this example). This library object has the following methods for use by your JavaScript module:
* ''get(section, key, deflt, usernum)''
* ''set(section, key, value, usernum)''
You can then call these methods like so:
var userprops = load({}, "userprops.js");
var list = userprops.get("yourmodule", "list", []);
list.push("new value"); // Add "new value" to list array
userprops.set("yourmodule", "list", list);
==== usernum ====
By default, these methods operate on the ''.ini'' file for the //current// user online. So if your module is only concerned with properties associated with the //current// user, you do not need to specify the ''usernum'' argument when calling these methods. Otherwise, you would specify a valid user number as the ''usernum'' argument value.
==== get ====
The ''userprops.js'' ''get'' method can be used to read:
* the entire property file associated with the specified user and return an //associative-array// of section Objects - this is the behavior when no arguments are provided by the caller
* the specified ''section'' from the user's property file and return it as an //Object// of properties - this is the behavior when a ''section'' but no ''key'' argument is provided by the caller
* a specific property ''key'' from a specified ''section'' of the user's property file and return its value or the specified ''deflt'' value if the property key does not exist
=== Types ===
To have precise control over the data-types read from a user's property file, you will need to ''get'' one property at a time and specify a default (''deflt'') property value argument. Otherwise, you may need to provide special logic to handle String values that have been interpreted as valid Number or Boolean type values.
==== set ====
The ''userprops.js'' ''set'' method can be used to write:
* the entire property file associated with the specified user
* the specified ''section'' within the user's property file
* a specific property ''key'' value within the user's property file
This method returns ''true'' or ''false'' to indicate success or failure.
===== See Also =====
* [[:custom:javascript:lib:|JavaScript libraries]]
{{tag>javascript userprops}}