107 lines
4.9 KiB
Markdown
107 lines
4.9 KiB
Markdown
# 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 ≈ 48–56)
|
||
- `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.
|