MemberSetting

Reference for the MemberSetting module: register the per-member settings a module offers, grouped into named categories, then read and write each member's values. Setting values are immutable, so every change writes a new record and the latest record for a setting wins.

This page is a pure reference. For how the framework fits together, see the Guide.

Classes

MemberSettingConfig

Register the settings a module offers, grouped by category, along with category titles for display. Registrations are held in the static properties below and read back through the getter functions.

Properties

PropertyTypeDescription
MemberSettingConfig::$settingsarrayThe registered setting objects.
MemberSettingConfig::$categoryTitlesarrayThe registered category titles, keyed by module and category.

AddBoolean

MemberSettingConfig::AddBoolean(string $moduleIdentifier, string $categoryIdentifier, string $settingIdentifier, bool $defaultValue, string $label = ''): void

Register a setting of type bool. The default is stored as '1' or '0'.

NameTypeDescription
$moduleIdentifierstringModule identifier.
$categoryIdentifierstringCategory identifier.
$settingIdentifierstringSetting identifier.
$defaultValueboolDefault value for the setting.
$labelstringHuman-readable label; defaults to the setting identifier.

Returns void

AddCategoryTitle

MemberSettingConfig::AddCategoryTitle(string $moduleIdentifier, string $categoryIdentifier, string $title): void

Register a category title for display in the UI.

NameTypeDescription
$moduleIdentifierstringModule identifier.
$categoryIdentifierstringCategory identifier.
$titlestringHuman-readable title for the category.

Returns void

AddInteger

MemberSettingConfig::AddInteger(string $moduleIdentifier, string $categoryIdentifier, string $settingIdentifier, int $defaultValue, string $label = ''): void

Register a setting of type integer. The default is stored as its string form.

NameTypeDescription
$moduleIdentifierstringModule identifier.
$categoryIdentifierstringCategory identifier.
$settingIdentifierstringSetting identifier.
$defaultValueintDefault value for the setting.
$labelstringHuman-readable label; defaults to the setting identifier.

Returns void

AddSetting

MemberSettingConfig::AddSetting(string $moduleIdentifier, string $categoryIdentifier, string $settingIdentifier, string $defaultValue, string $type = 'string', string $label = ''): void

Register a setting that can be configured by modules. The type must be one of 'string', 'bool' or 'integer'.

NameTypeDescription
$moduleIdentifierstringModule identifier.
$categoryIdentifierstringCategory identifier.
$settingIdentifierstringSetting identifier.
$defaultValuestringDefault value for the setting.
$typestringSetting type: 'string', 'bool' or 'integer'.
$labelstringHuman-readable label; defaults to the setting identifier.

Returns void

AddString

MemberSettingConfig::AddString(string $moduleIdentifier, string $categoryIdentifier, string $settingIdentifier, string $defaultValue, string $label = ''): void

Register a setting of type string.

NameTypeDescription
$moduleIdentifierstringModule identifier.
$categoryIdentifierstringCategory identifier.
$settingIdentifierstringSetting identifier.
$defaultValuestringDefault value for the setting.
$labelstringHuman-readable label; defaults to the setting identifier.

Returns void

GetAllSettings

MemberSettingConfig::GetAllSettings(): array

All configured settings, each an object with moduleIdentifier, categoryIdentifier, settingIdentifier, defaultValue, type and label.

Returns array The registered setting objects.

GetCategoryTitle

MemberSettingConfig::GetCategoryTitle(string $moduleIdentifier, string $categoryIdentifier): string

The registered title for a category, or the category identifier when none was registered.

NameTypeDescription
$moduleIdentifierstringModule identifier.
$categoryIdentifierstringCategory identifier.

Returns string The category title, or the category identifier when not set.

GetSettingsByCategory

MemberSettingConfig::GetSettingsByCategory(string $moduleIdentifier, string $categoryIdentifier): array

The registered setting objects for one module and category.

NameTypeDescription
$moduleIdentifierstringModule identifier.
$categoryIdentifierstringCategory identifier.

Returns array The matching setting objects.

MemberSettingData

Immutable data for one member's setting value. Fields, a constructor, and JSON conversion.

Properties

PropertyTypeDescription
$data->idintRecord id (readonly).
$data->memberIdintThe member the value belongs to (readonly).
$data->moduleIdentifierstringModule identifier (readonly).
$data->categoryIdentifierstringCategory identifier (readonly).
$data->settingIdentifierstringSetting identifier (readonly).
$data->valuestringThe stored setting value (readonly).
$data->addedTimestampCalendarDateTimeDataWhen the record was written (readonly).

__construct

new MemberSettingData(int $id = 0, int $memberId = 0, string $moduleIdentifier = '', string $categoryIdentifier = '', string $settingIdentifier = '', string $value = '', CalendarDateTimeData $addedTimestamp = new CalendarDateTimeData())

Create a setting value from its fields.

NameTypeDescription
$idintRecord id.
$memberIdintThe member the value belongs to.
$moduleIdentifierstringModule identifier.
$categoryIdentifierstringCategory identifier.
$settingIdentifierstringSetting identifier.
$valuestringThe stored setting value.
$addedTimestampCalendarDateTimeDataWhen the record was written.

Returns MemberSettingData

FromJson

MemberSettingData::FromJson(string $json): MemberSettingData

Build a setting value from its JSON form, as produced by ToJson.

NameTypeDescription
$jsonstringThe JSON string.

Returns MemberSettingData The decoded setting value.

ToJson

$data->ToJson(): string

The setting value as a JSON string, with the timestamp as a Unix timestamp.

Returns string The JSON form.

MemberSettingDatabase

Read a member's stored setting values and create new ones. Records are immutable, so create writes a new record and the reads return the latest record for each setting.

Create

MemberSettingDatabase::Create(int $memberId, string $moduleIdentifier, string $categoryIdentifier, string $settingIdentifier, string $value): void

Create a new setting value for a member. Records are immutable, so each change creates a new record.

NameTypeDescription
$memberIdintThe member id.
$moduleIdentifierstringModule identifier.
$categoryIdentifierstringCategory identifier.
$settingIdentifierstringSetting identifier.
$valuestringSetting value.

Returns void

fromRow

MemberSettingDatabase::fromRow(stdClass $row): MemberSettingData

Map a database row to a MemberSettingData.

NameTypeDescription
$rowstdClassThe member_setting row.

Returns MemberSettingData The mapped setting value.

GetByModule

MemberSettingDatabase::GetByModule(int $memberId, string $moduleIdentifier): array

Every latest setting value for a member within one module, across all its categories.

NameTypeDescription
$memberIdintThe member id.
$moduleIdentifierstringModule identifier.

Returns array A list of MemberSettingData.

GetByModuleAndCategory

MemberSettingDatabase::GetByModuleAndCategory(int $memberId, string $moduleIdentifier, string $categoryIdentifier): array

Every latest setting value for a member within one module and category.

NameTypeDescription
$memberIdintThe member id.
$moduleIdentifierstringModule identifier.
$categoryIdentifierstringCategory identifier.

Returns array A list of MemberSettingData.

GetById

MemberSettingDatabase::GetById(int $id): MemberSettingData

One setting record by its id.

NameTypeDescription
$idintSetting id.

Returns MemberSettingData The setting value.

GetOptionalBySetting

MemberSettingDatabase::GetOptionalBySetting(int $memberId, string $moduleIdentifier, string $categoryIdentifier, string $settingIdentifier): MemberSettingData|null

The latest setting value for a member by full setting details, or null when none exists.

NameTypeDescription
$memberIdintThe member id.
$moduleIdentifierstringModule identifier.
$categoryIdentifierstringCategory identifier.
$settingIdentifierstringSetting identifier.

Returns MemberSettingData|null The setting value, or null.

MemberSettingFormUi

Render a settings form for the logged-in member. Displays the settings of one category as form fields and saves the submitted values.

Functions

Category

MemberSettingFormUi::Category(string $moduleIdentifier, string $categoryIdentifier, string $title = '', string $description = '', string $successUrl = '', string $successMessage = 'Settings saved successfully'): void

Display an action form for a category of settings for the logged-in member, and save the submitted values as new records.

NameTypeDescription
$moduleIdentifierstringModule identifier.
$categoryIdentifierstringCategory identifier.
$titlestringForm title; defaults to the category title from config.
$descriptionstringOptional description text.
$successUrlstringURL to redirect to after a successful save.
$successMessagestringSuccess message to display.

Returns void