PHPackages                             escolalms/settings - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. escolalms/settings

ActivePackage[Utility &amp; Helpers](/categories/utility)

escolalms/settings
==================

Escola LMS Settings and custom fields management

0.2.6(1y ago)0202.4k↑33.3%20MITPHPPHP &gt;=7.4|&gt;=8CI passing

Since Sep 2Pushed 8mo ago1 watchersCompare

[ Source](https://github.com/EscolaLMS/settings)[ Packagist](https://packagist.org/packages/escolalms/settings)[ RSS](/packages/escolalms-settings/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (5)Versions (32)Used By (20)

Settings
========

[](#settings)

Configuration management package

[![swagger](https://camo.githubusercontent.com/bf46f50926ef796b1bb0b6e41af746af52ff3aacdffb0533450f3b614a7334a2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f63756d656e746174696f6e2d737761676765722d677265656e)](https://escolalms.github.io/settings/)[![codecov](https://camo.githubusercontent.com/f82b1bff36818572898128ec68e1880eddcd0e77371c181e0d49dcfd2459eefa/68747470733a2f2f636f6465636f762e696f2f67682f4573636f6c614c4d532f73657474696e67732f6272616e63682f6d61696e2f67726170682f62616467652e7376673f746f6b656e3d67427a70794e4b384451)](https://codecov.io/gh/EscolaLMS/settings)[![phpunit](https://github.com/EscolaLMS/settings/actions/workflows/test.yml/badge.svg)](https://github.com/EscolaLMS/settings/actions/workflows/test.yml)[![downloads](https://camo.githubusercontent.com/930c7651e6cc5b55b63c601e1218dc1bdb127298f93f93ea940dfa0e0f2ba00b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6573636f6c616c6d732f73657474696e6773)](https://packagist.org/packages/escolalms/settings)[![downloads](https://camo.githubusercontent.com/945cbe8eecf074cc60a2c7d2a994d498a30c0e6c62f745fc3a1585756d988b48/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6573636f6c616c6d732f73657474696e6773)](https://packagist.org/packages/escolalms/settings)[![downloads](https://camo.githubusercontent.com/ae03a8fd4f24788fc1c32467fab0024fa583c2084150eb34032af3ff646f81e7/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6573636f6c616c6d732f73657474696e6773)](https://packagist.org/packages/escolalms/settings)

Purpose
-------

[](#purpose)

This package can be used to register application config keys which can be then modified through API and/or Admin Panel.

Installation
------------

[](#installation)

- `composer require escolalms/settings`
- `php artisan migrate`
- `php artisan db:seed --class="EscolaLms\Settings\Database\Seeders\PermissionTableSeeder"`
- optional: `php artisan vendor:publish --tag=escola_settings.config` to publish config file

Dependencies
------------

[](#dependencies)

Usage
-----

[](#usage)

### Configuration

[](#configuration)

Config file contains `use_database` option, which determines if Config should be written and loaded to database (if `true`), or config files should be overwritten (if `false`);

### Registering config keys

[](#registering-config-keys)

Every package can register config keys by calling `registerConfig` static method from `AdministrableConfig` Facade in its own Package Service Provider `register` method.

```
use EscolaLms\Settings\Facades\AdministrableConfig;

public function register(){

    //...

    AdministrableConfig::registerConfig($key = 'config_file.config_key', $rules = ['required', 'string'], $public = true, $readonly = false);

}
```

When registering a configuration key you can:

- specify validation rules for values that can be stored (using any of rules available for Laravel validator)
- specify if key is `public` (so anonymous users can retrieve the value)
- specify if key is `readonly` (so it is returned by API but can not be changed using API)

### Loading config

[](#loading-config)

Config will be automatically loaded from database (if `use_database` config options is true). Otherwise, if overwriting config files is chosen, normal Laravel config loading mechanism is used.

### Changing config

[](#changing-config)

`EscolaLms\Settings\Facades\AdministrableConfig` facade can also be used to modify and retrieve values for registered config keys.

```
AdministrableConfig::setConfig(array $config); // sets config values for any registered config key in $config array, running validation rules
AdministrableConfig::getConfig(); // returns values for all registered config keys
AdministrableConfig::getPublicConfig(); // returns values for config keys registered with public: true
```

These methods are utilised by web API of this package.

### Config Repository Extension &amp; Config Rewriter

[](#config-repository-extension--config-rewriter)

This package extends basic `config` Facade of Laravel Framework wrapping it in `EscolaLms\Settings\ConfigRewriter\ConfigRepositoryExtension` decorator. This extended Config repository has a `write` method that can be called to store all in-memory changes to configuration values straight into config files. Writing operation tries to preserve structure of original config files (order of keys, comments, etc.) but it's not always possible (parses this package uses is WIP) and sometimes everything other than keys and values can be removed from config file. Using Database to store modified config values is a safer (non-destructive) option.

Endpoints
---------

[](#endpoints)

All the endpoints are defined in [![swagger](https://camo.githubusercontent.com/bf46f50926ef796b1bb0b6e41af746af52ff3aacdffb0533450f3b614a7334a2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f63756d656e746174696f6e2d737761676765722d677265656e)](https://escolalms.github.io/settings/).

Events
------

[](#events)

- `EscolaLms\Settings\Events\SettingPackageConfigUpdated` emitted when settings are changed using web API.

Listeners
---------

[](#listeners)

No Listeners are defined in this package.

How to use this package on Frontend
-----------------------------------

[](#how-to-use-this-package-on-frontend)

### Admin Panel

[](#admin-panel)

#### **Left menu**

[](#left-menu)

[![Admin panel menu](docs/menu.png "Admin panel menu")](docs/menu.png)

#### **List of registered Settings for single package (EscolaLms\\Auth package used in screenshot)**

[](#list-of-registered-settings-for-single-package-escolalmsauth-package-used-in-screenshot)

[![List of registered settings for single package](docs/list.png "List of registered settings for single package")](docs/list.png)

#### **Editing registered Setting**

[](#editing-registered-setting)

[![Editing registered Setting](docs/edit.png "Editing registered Setting")](docs/edit.png)

Tests
-----

[](#tests)

Run `./vendor/bin/phpunit --filter 'EscolaLms\\Settings\\Tests'` to run tests. See [tests](tests) folder as it's quite good staring point as documentation appendix.

Test details: [![codecov](https://camo.githubusercontent.com/f82b1bff36818572898128ec68e1880eddcd0e77371c181e0d49dcfd2459eefa/68747470733a2f2f636f6465636f762e696f2f67682f4573636f6c614c4d532f73657474696e67732f6272616e63682f6d61696e2f67726170682f62616467652e7376673f746f6b656e3d67427a70794e4b384451)](https://codecov.io/gh/EscolaLMS/settings)[![phpunit](https://github.com/EscolaLMS/settings/actions/workflows/test.yml/badge.svg)](https://github.com/EscolaLMS/settings/actions/workflows/test.yml)

Permissions
-----------

[](#permissions)

Permissions are defined in [Enum](src/Enums/ReportsPermissionsEnum.php) and seeded in [Seeder](database/seeders/ReportsPermissionSeeder.php).

Roadmap. Todo. Troubleshooting
------------------------------

[](#roadmap-todo-troubleshooting)

- Describe what "Settings" part of this package does (as only "Config" was described, and this package has/had second purpose)

###  Health Score

43

—

FairBetter than 91% of packages

Maintenance55

Moderate activity, may be stable

Popularity32

Limited adoption so far

Community28

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor3

3 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~45 days

Recently: every ~181 days

Total

31

Last Release

368d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c857f3115c790c573d0617d7e9ba4011269ef7b9dfdb003dc4388846a62b14f7?d=identicon)[qunabu](/maintainers/qunabu)

---

Top Contributors

[![daVitekPL](https://avatars.githubusercontent.com/u/58150098?v=4)](https://github.com/daVitekPL "daVitekPL (15 commits)")[![pa-cholek](https://avatars.githubusercontent.com/u/5345420?v=4)](https://github.com/pa-cholek "pa-cholek (11 commits)")[![HerbertIV](https://avatars.githubusercontent.com/u/62691459?v=4)](https://github.com/HerbertIV "HerbertIV (11 commits)")[![qunabu](https://avatars.githubusercontent.com/u/214608?v=4)](https://github.com/qunabu "qunabu (8 commits)")[![mako321](https://avatars.githubusercontent.com/u/59456825?v=4)](https://github.com/mako321 "mako321 (5 commits)")[![KrzysztofDziedziechEscolasoft](https://avatars.githubusercontent.com/u/96292232?v=4)](https://github.com/KrzysztofDziedziechEscolasoft "KrzysztofDziedziechEscolasoft (2 commits)")[![dicani0](https://avatars.githubusercontent.com/u/58490533?v=4)](https://github.com/dicani0 "dicani0 (2 commits)")[![dyfero](https://avatars.githubusercontent.com/u/59400506?v=4)](https://github.com/dyfero "dyfero (2 commits)")[![krzEscola](https://avatars.githubusercontent.com/u/85549830?v=4)](https://github.com/krzEscola "krzEscola (1 commits)")[![rudzky](https://avatars.githubusercontent.com/u/56910654?v=4)](https://github.com/rudzky "rudzky (1 commits)")

---

Tags

customizationlaravel

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/escolalms-settings/health.svg)

```
[![Health](https://phpackages.com/badges/escolalms-settings/health.svg)](https://phpackages.com/packages/escolalms-settings)
```

###  Alternatives

[wireui/wireui

TallStack components

1.8k1.3M16](/packages/wireui-wireui)[livewire/volt

An elegantly crafted functional API for Laravel Livewire.

4205.3M84](/packages/livewire-volt)[ramonrietdijk/livewire-tables

Dynamic tables for models with Laravel Livewire

21147.4k](/packages/ramonrietdijk-livewire-tables)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
