Files
2026-02-10 22:11:06 -05:00

107 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Current Software Architecture of `alrahma_sunday_school`
<p align="center">
<img src="/image/system_architecture.png" alt="software-architecture" width="1000"/>
</p>
# 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](https://codeigniter.com).
This repository holds a composer-installable app starter.
It has been built from the
[development repository](https://github.com/codeigniter4/CodeIgniter4).
More information about the plans for version 4 can be found in [CodeIgniter 4](https://forum.codeigniter.com/forumdisplay.php?fid=28) on the forums.
You can read the [user guide](https://codeigniter.com/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](http://forum.codeigniter.com) 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:
- [intl](http://php.net/manual/en/intl.requirements.php)
- [mbstring](http://php.net/manual/en/mbstring.installation.php)
> [!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](http://php.net/manual/en/mysqlnd.install.php) if you plan to use MySQL
- [libcurl](http://php.net/manual/en/curl.requirements.php) 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_MODE` or `printer.mode`: `network` (default), `usb`, or `windows`
- Special: `disabled`/`off`/`none` skips device printing (useful in test)
- `PRINTER_HOST` / `PRINTER_PORT` or `printer.host` / `printer.port`: Network printer TCP settings
- `PRINTER_USB_VID` / `PRINTER_USB_PID` or `printer.usb.vid` / `printer.usb.pid`: USB printer identifiers (Linux/Mac)
- `PRINTER_WINDOWS_NAME` or `printer.windows.name`: Windows printer share/port name (Windows only)
- `PRINTER_CHARS_PER_LINE` or `printer.chars_per_line`: Characters per line (80mm paper ≈ 4856)
- `PRINTER_FEED_LINES` or `printer.feed_lines`: Number of trailing blank lines before cut
Notes:
- When `PRINTER_MODE=windows` is set on a non-Windows OS, the app falls back to `network` mode.
- 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.