update financial controller and fix curriculum subjects See merge request root/alrahma_sunday_school!3
Current Software Architecture of alrahma_sunday_school
CodeIgniter 4 Application Starter
What is CodeIgniter?
CodeIgniter is a PHP full-stack web framework that is light, fast, flexible and secure. More information can be found at the official site.
This repository holds a composer-installable app starter. It has been built from the development repository.
More information about the plans for version 4 can be found in CodeIgniter 4 on the forums.
You can read the user guide corresponding to the latest version of the framework.
Installation & updates
composer create-project codeigniter4/appstarter then composer update whenever
there is a new release of the framework.
When updating, check the release notes to see if there are any changes you might need to apply
to your app folder. The affected files can be copied or merged from
vendor/codeigniter4/framework/app.
Setup
Copy env to .env and tailor for your app, specifically the baseURL
and any database settings.
Important Change with index.php
index.php is no longer in the root of the project! It has been moved inside the public folder,
for better security and separation of components.
This means that you should configure your web server to "point" to your project's public folder, and not to the project root. A better practice would be to configure a virtual host to point there. A poor practice would be to point your web server to the project root and expect to enter public/..., as the rest of your logic and the framework are exposed.
Please read the user guide for a better explanation of how CI4 works!
Repository Management
We use GitHub issues, in our main repository, to track BUGS and to track approved DEVELOPMENT work packages. We use our forum to provide SUPPORT and to discuss FEATURE REQUESTS.
This repository is a "distribution" one, built by our release preparation script. Problems with it can be raised on our forum, or as issues in the main repository.
Server Requirements
PHP version 8.1 or higher is required, with the following extensions installed:
Warning
- The end of life date for PHP 7.4 was November 28, 2022.
- The end of life date for PHP 8.0 was November 26, 2023.
- If you are still using PHP 7.4 or 8.0, you should upgrade immediately.
- The end of life date for PHP 8.1 will be December 31, 2025.
Additionally, make sure that the following extensions are enabled in your PHP:
- json (enabled by default - don't turn it off)
- mysqlnd if you plan to use MySQL
- libcurl if you plan to use the HTTP\CURLRequest library
Slip Printer Configuration
The late-slip printer can be configured via .env. The controller supports both uppercase PRINTER_* keys and dotted printer.* keys.
PRINTER_MODEorprinter.mode:network(default),usb, orwindows- Special:
disabled/off/noneskips device printing (useful in test)
- Special:
PRINTER_HOST/PRINTER_PORTorprinter.host/printer.port: Network printer TCP settingsPRINTER_USB_VID/PRINTER_USB_PIDorprinter.usb.vid/printer.usb.pid: USB printer identifiers (Linux/Mac)PRINTER_WINDOWS_NAMEorprinter.windows.name: Windows printer share/port name (Windows only)PRINTER_CHARS_PER_LINEorprinter.chars_per_line: Characters per line (80mm paper ≈ 48–56)PRINTER_FEED_LINESorprinter.feed_lines: Number of trailing blank lines before cut
Notes:
- When
PRINTER_MODE=windowsis set on a non-Windows OS, the app falls back tonetworkmode. - USB mode on Linux/Mac requires both VID and PID values.
Testing
The PHPUnit suite expects a real database connection so it can apply migrations and seed data from tests/_support/Database. Tests will use the tests database group defined in app/Config/Database.php, which already points to localhost and the u280815660_school schema.
Before running ./vendor/bin/phpunit or php spark test, copy env to .env.testing (or .env) and set the matching environment variables:
database.tests.hostname = localhost
database.tests.database = your_test_database
database.tests.username = your_username
database.tests.password = your_password
database.tests.DBDriver = MySQLi
database.tests.DBPrefix =
That ensures the CIUnitTestCase base class can connect, run migrations, and tear down data between tests. Once configured, run the suite with ./vendor/bin/phpunit or php spark test --testsuite=App to validate the API.
