AppSettingsTable
extends BaseTable
in package
AppSettings Model
Table of Contents
Constants
- CACHE_GROUPS_TO_CLEAR : array<string|int, string> = []
- CACHES_TO_CLEAR : array<string|int, array{string, string}> = []
- ID_CACHES_TO_CLEAR : array<string|int, array{string, string}> = []
- ALL_SETTINGS_CACHE_KEY : mixed = 'app_settings_all'
- FILE_MIME_TYPES : mixed = ['application/pdf' => 'pdf', 'image/gif' => 'gi...
- IMAGE_MIME_TYPES : mixed = ['image/gif' => 'gif', 'image/jpeg' => 'jpg', '...
- MAX_ASSET_BYTES : mixed = 2097152
- PASSWORD_VALUE_PREFIX : mixed = 'enc:v1:'
Properties
- $sensitiveSettingRequestCache : array<string, mixed>
- Request-local sensitive settings keyed by tenant-aware cache key.
-
$settingsPayloadRequestCache
: array<string, array{values: array
, raw: array }> - Request-local all-settings payload keyed by tenant-aware cache key.
Methods
- addBranchScopeQuery() : SelectQuery
- Add branch-based data scoping to a query.
- afterDelete() : void
- Clear app setting caches after direct deletes.
- afterSave() : void
- Clear app setting caches after direct saves.
- assetValueFromUpload() : string
- Build a safe database asset payload from an uploaded app setting file.
- buildRules() : RulesChecker
- Define application-level rules.
- clearRequestCaches() : void
- Clear request-local setting memoization.
- delete() : bool
- Delete.
- deleteAppSetting() : bool
- Delete app setting.
- deleteMany() : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>|false
- deleteManyOrFail() : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>
- deleteSetting() : bool
- Update an app setting and cache the new value.
- findOrCreate() : AppSetting
- get() : AppSetting
- getAllAppSettingsStartWith() : array<string|int, mixed>
- Get all app settings start with.
- getAppSetting() : mixed
- Get app setting.
- getAssetPayload() : array<string, mixed>|null
- Read a decoded app setting asset payload for public delivery.
- getSetting() : mixed
- Get an app setting by name, using cache.
- initialize() : void
- Initialize method
- newEmptyEntity() : AppSetting
- newEntities() : array<string|int, AppSetting>
- newEntity() : AppSetting
- patchEntities() : array<string|int, AppSetting>
- patchEntity() : AppSetting
- save() : EntityInterface|false
- Save.
- saveMany() : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>|false
- saveManyOrFail() : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>
- saveOrFail() : AppSetting
- setAppSetting() : bool
- Set app setting.
- updateSetting() : bool
- Update an app setting and cache the new value.
- validationDefault() : Validator
- Default validation rules.
- logImpersonationAction() : void
- Record impersonated writes to audit log table.
- setJsonColumnTypesIfPresent() : void
- Mark JSON columns when the table schema is available.
- allowedAssetTypes() : array<string, string>
- Get allowed MIME types for a public asset setting type.
- allSettingsCacheKey() : string
- Build a tenant-safe cache key for all non-sensitive settings.
- assetCacheKey() : string
- Build a tenant-safe cache key for decoded asset payloads.
- assetFilename() : string
- Build a safe filename with the detected extension.
- assetUrl() : string
- Build a public URL for a stored app setting asset.
- assignSettingValues() : void
- Assign mutable setting fields before saving.
- cacheKey() : string
- Build a tenant-safe cache key for a setting name.
- clearSettingCaches() : void
- Clear tenant-scoped caches affected by setting mutation.
- decodeAssetPayload() : array<string, mixed>|null
- Decode and validate a stored database asset payload.
- detectMimeType() : string
- Detect MIME type from file content.
-
getCachedSettingsPayload()
: array{values: array
, raw: array } - Read all non-sensitive settings from cache or database.
- getPasswordEncryptionKey() : string
- Get password encryption key.
- isAssetType() : bool
- Check if a setting type is a stored public asset.
- isSensitiveSetting() : bool
- Check if sensitive setting.
- isUniqueSettingConflict() : bool
- Detect duplicate-name conflicts from read-then-insert setting creation.
- resolveValueForRead() : mixed
- Resolve value for read.
- resolveValueForWrite() : mixed
- Resolve value for write.
- unsupportedAssetMessage() : string
- Build unsupported asset message.
- uploadErrorMessage() : string
- Build upload error message.
Constants
CACHE_GROUPS_TO_CLEAR
protected
array<string|int, string>
CACHE_GROUPS_TO_CLEAR
= []
Cache groups to clear entirely on save
CACHES_TO_CLEAR
protected
array<string|int, array{string, string}>
CACHES_TO_CLEAR
= []
Static cache entries to clear on save
ID_CACHES_TO_CLEAR
protected
array<string|int, array{string, string}>
ID_CACHES_TO_CLEAR
= []
Entity-ID cache prefixes to clear on save
ALL_SETTINGS_CACHE_KEY
private
mixed
ALL_SETTINGS_CACHE_KEY
= 'app_settings_all'
FILE_MIME_TYPES
private
mixed
FILE_MIME_TYPES
= ['application/pdf' => 'pdf', 'image/gif' => 'gif', 'image/jpeg' => 'jpg', 'image/png' => 'png', 'image/webp' => 'webp', 'text/plain' => 'txt']
IMAGE_MIME_TYPES
private
mixed
IMAGE_MIME_TYPES
= ['image/gif' => 'gif', 'image/jpeg' => 'jpg', 'image/png' => 'png', 'image/webp' => 'webp']
MAX_ASSET_BYTES
private
mixed
MAX_ASSET_BYTES
= 2097152
PASSWORD_VALUE_PREFIX
private
mixed
PASSWORD_VALUE_PREFIX
= 'enc:v1:'
Properties
$sensitiveSettingRequestCache
Request-local sensitive settings keyed by tenant-aware cache key.
private
static array<string, mixed>
$sensitiveSettingRequestCache
= []
$settingsPayloadRequestCache
Request-local all-settings payload keyed by tenant-aware cache key.
private
static array<string, array{values: array, raw: array}>
$settingsPayloadRequestCache
= []
Methods
addBranchScopeQuery()
Add branch-based data scoping to a query.
public
addBranchScopeQuery(SelectQuery $query, array<string|int, int> $branchIDs) : SelectQuery
Child tables should override for custom branch relationships.
Parameters
- $query : SelectQuery
-
The query to modify
- $branchIDs : array<string|int, int>
-
Authorized branch IDs
Return values
SelectQuery —Query with branch filtering
afterDelete()
Clear app setting caches after direct deletes.
public
afterDelete(mixed $event, EntityInterface $entity, mixed $options) : void
Parameters
- $event : mixed
-
Event
- $entity : EntityInterface
-
Deleted setting
- $options : mixed
-
Delete options
afterSave()
Clear app setting caches after direct saves.
public
afterSave(mixed $event, EntityInterface $entity, mixed $options) : void
Parameters
- $event : mixed
-
Event
- $entity : EntityInterface
-
Saved setting
- $options : mixed
-
Save options
assetValueFromUpload()
Build a safe database asset payload from an uploaded app setting file.
public
assetValueFromUpload(string $type, UploadedFileInterface $file) : string
Parameters
- $type : string
-
App setting type: image or file
- $file : UploadedFileInterface
-
Uploaded file
Return values
string —JSON payload for app_settings.value
buildRules()
Define application-level rules.
public
buildRules(RulesChecker $rules) : RulesChecker
Parameters
- $rules : RulesChecker
Return values
RulesCheckerclearRequestCaches()
Clear request-local setting memoization.
public
static clearRequestCaches() : void
Useful for tests and long-running workers that need to simulate a fresh request after directly manipulating the shared cache or database.
delete()
Delete.
public
delete(EntityInterface $entity[, array<string|int, mixed> $options = [] ]) : bool
Parameters
- $entity : EntityInterface
- $options : array<string|int, mixed> = []
Return values
booldeleteAppSetting()
Delete app setting.
public
deleteAppSetting(mixed $key[, bool $forceDelete = false ]) : bool
Parameters
- $key : mixed
- $forceDelete : bool = false
Return values
booldeleteMany()
public
deleteMany(iterable<string|int, mixed> $entities[, array<string|int, mixed> $options = = '[]' ]) : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>|false
Parameters
- $entities : iterable<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>|falsedeleteManyOrFail()
public
deleteManyOrFail(iterable<string|int, mixed> $entities[, array<string|int, mixed> $options = = '[]' ]) : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>
Parameters
- $entities : iterable<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>deleteSetting()
Update an app setting and cache the new value.
public
deleteSetting(string $name[, bool $forceDelete = false ]) : bool
Parameters
- $name : string
-
The name of the setting.
- $forceDelete : bool = false
Return values
bool —True on success, false on failure.
findOrCreate()
public
findOrCreate(mixed $search[, callable|null $callback = = 'null' ][, array<string|int, mixed> $options = = '[]' ]) : AppSetting
Parameters
- $search : mixed
- $callback : callable|null = = 'null'
- $options : array<string|int, mixed> = = '[]'
Return values
AppSettingget()
public
get(mixed $primaryKey[, array<string|int, mixed>|string $finder = = '\'all\'' ][, CacheInterface|string|null $cache = = 'null' ][, Closure|string|null $cacheKey = = 'null' ], mixed ...$args) : AppSetting
Parameters
- $primaryKey : mixed
- $finder : array<string|int, mixed>|string = = '\'all\''
- $cache : CacheInterface|string|null = = 'null'
- $cacheKey : Closure|string|null = = 'null'
- $args : mixed
Return values
AppSettinggetAllAppSettingsStartWith()
Get all app settings start with.
public
getAllAppSettingsStartWith(mixed $key) : array<string|int, mixed>
Parameters
- $key : mixed
Return values
array<string|int, mixed>getAppSetting()
Get app setting.
public
getAppSetting(mixed $key[, mixed $default = null ][, mixed $type = null ][, mixed $required = false ]) : mixed
Parameters
- $key : mixed
- $default : mixed = null
- $type : mixed = null
- $required : mixed = false
getAssetPayload()
Read a decoded app setting asset payload for public delivery.
public
getAssetPayload(string $name) : array<string, mixed>|null
Parameters
- $name : string
-
App setting name
Return values
array<string, mixed>|nullgetSetting()
Get an app setting by name, using cache.
public
getSetting(string $name) : mixed
Parameters
- $name : string
-
The name of the setting.
Return values
mixed —The value of the setting.
initialize()
Initialize method
public
initialize(array<string, mixed> $config) : void
Parameters
- $config : array<string, mixed>
-
The configuration for the Table.
newEmptyEntity()
public
newEmptyEntity() : AppSetting
Return values
AppSettingnewEntities()
public
newEntities(array<string|int, mixed> $data[, array<string|int, mixed> $options = = '[]' ]) : array<string|int, AppSetting>
Parameters
- $data : array<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
array<string|int, AppSetting>newEntity()
public
newEntity(array<string|int, mixed> $data[, array<string|int, mixed> $options = = '[]' ]) : AppSetting
Parameters
- $data : array<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
AppSettingpatchEntities()
public
patchEntities(iterable<string|int, mixed> $entities, array<string|int, mixed> $data[, array<string|int, mixed> $options = = '[]' ]) : array<string|int, AppSetting>
Parameters
- $entities : iterable<string|int, mixed>
- $data : array<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
array<string|int, AppSetting>patchEntity()
public
patchEntity(EntityInterface $entity, array<string|int, mixed> $data[, array<string|int, mixed> $options = = '[]' ]) : AppSetting
Parameters
- $entity : EntityInterface
- $data : array<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
AppSettingsave()
Save.
public
save(EntityInterface $entity[, array<string|int, mixed> $options = [] ]) : EntityInterface|false
Parameters
- $entity : EntityInterface
- $options : array<string|int, mixed> = []
Return values
EntityInterface|falsesaveMany()
public
saveMany(iterable<string|int, mixed> $entities[, array<string|int, mixed> $options = = '[]' ]) : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>|false
Parameters
- $entities : iterable<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>|falsesaveManyOrFail()
public
saveManyOrFail(iterable<string|int, mixed> $entities[, array<string|int, mixed> $options = = '[]' ]) : iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>
Parameters
- $entities : iterable<string|int, mixed>
- $options : array<string|int, mixed> = = '[]'
Return values
iterable<string|int, AppSetting>|ResultSetInterface<string|int, AppSetting>saveOrFail()
public
saveOrFail(EntityInterface $entity[, array<string|int, mixed> $options = = '[]' ]) : AppSetting
Parameters
- $entity : EntityInterface
- $options : array<string|int, mixed> = = '[]'
Return values
AppSettingsetAppSetting()
Set app setting.
public
setAppSetting(mixed $key, mixed $value[, mixed $type = null ][, mixed $required = false ]) : bool
Parameters
- $key : mixed
- $value : mixed
- $type : mixed = null
- $required : mixed = false
Return values
boolupdateSetting()
Update an app setting and cache the new value.
public
updateSetting(string $name, string|null $type, mixed $value[, mixed $required = false ]) : bool
Parameters
- $name : string
-
The name of the setting.
- $type : string|null
-
The new value of the setting.
- $value : mixed
-
The new value of the setting.
- $required : mixed = false
Return values
bool —True on success, false on failure.
validationDefault()
Default validation rules.
public
validationDefault(Validator $validator) : Validator
Parameters
- $validator : Validator
-
Validator instance.
Return values
ValidatorlogImpersonationAction()
Record impersonated writes to audit log table.
protected
logImpersonationAction(string $defaultOperation, EntityInterface $entity) : void
Parameters
- $defaultOperation : string
-
Operation fallback (save/delete)
- $entity : EntityInterface
-
Affected entity
setJsonColumnTypesIfPresent()
Mark JSON columns when the table schema is available.
protected
setJsonColumnTypesIfPresent(array<int, string> $columns) : void
Some reset/migration flows instantiate table classes before every table exists. JSON type mapping is optional metadata, so skip it until the schema can be described instead of failing application bootstrap.
Parameters
- $columns : array<int, string>
-
JSON column names.
allowedAssetTypes()
Get allowed MIME types for a public asset setting type.
private
allowedAssetTypes(string $type) : array<string, string>
Parameters
- $type : string
Return values
array<string, string>allSettingsCacheKey()
Build a tenant-safe cache key for all non-sensitive settings.
private
allSettingsCacheKey() : string
Return values
stringassetCacheKey()
Build a tenant-safe cache key for decoded asset payloads.
private
assetCacheKey(string $name) : string
Parameters
- $name : string
Return values
stringassetFilename()
Build a safe filename with the detected extension.
private
assetFilename(string $clientFilename, string $extension) : string
Parameters
- $clientFilename : string
- $extension : string
Return values
stringassetUrl()
Build a public URL for a stored app setting asset.
private
assetUrl(string $name, array<string, mixed> $payload) : string
Parameters
- $name : string
-
App setting name
- $payload : array<string, mixed>
-
Decoded asset payload
Return values
stringassignSettingValues()
Assign mutable setting fields before saving.
private
assignSettingValues(EntityInterface $setting, string $type, string|null $encodedValue, bool $required) : void
Parameters
- $setting : EntityInterface
-
App setting entity
- $type : string
-
Effective setting type
- $encodedValue : string|null
-
Encoded value to persist
- $required : bool
-
Required flag
cacheKey()
Build a tenant-safe cache key for a setting name.
private
cacheKey(string $name) : string
Parameters
- $name : string
Return values
stringclearSettingCaches()
Clear tenant-scoped caches affected by setting mutation.
private
clearSettingCaches([string|null $name = null ]) : void
Parameters
- $name : string|null = null
decodeAssetPayload()
Decode and validate a stored database asset payload.
private
decodeAssetPayload(mixed $value) : array<string, mixed>|null
Parameters
- $value : mixed
Return values
array<string, mixed>|nulldetectMimeType()
Detect MIME type from file content.
private
detectMimeType(string $contents) : string
Parameters
- $contents : string
Return values
stringgetCachedSettingsPayload()
Read all non-sensitive settings from cache or database.
private
getCachedSettingsPayload() : array{values: array, raw: array}
Return values
array{values: arraygetPasswordEncryptionKey()
Get password encryption key.
private
getPasswordEncryptionKey() : string
Return values
stringisAssetType()
Check if a setting type is a stored public asset.
private
isAssetType(string $type) : bool
Parameters
- $type : string
Return values
boolisSensitiveSetting()
Check if sensitive setting.
private
isSensitiveSetting(string $name) : bool
Parameters
- $name : string
Return values
boolisUniqueSettingConflict()
Detect duplicate-name conflicts from read-then-insert setting creation.
private
isUniqueSettingConflict(DatabaseException $exception) : bool
Parameters
- $exception : DatabaseException
-
Database exception
Return values
boolresolveValueForRead()
Resolve value for read.
private
resolveValueForRead(string $type, mixed $value[, string|null $name = null ]) : mixed
Parameters
- $type : string
- $value : mixed
- $name : string|null = null
resolveValueForWrite()
Resolve value for write.
private
resolveValueForWrite(string $type, mixed $value, bool $settingExists) : mixed
Parameters
- $type : string
- $value : mixed
- $settingExists : bool
unsupportedAssetMessage()
Build unsupported asset message.
private
unsupportedAssetMessage(string $type) : string
Parameters
- $type : string
Return values
stringuploadErrorMessage()
Build upload error message.
private
uploadErrorMessage(int $errorCode) : string
Parameters
- $errorCode : int